C语言6大常用标准库 -- 1.<stdio.h>

news2024/12/22 18:48:10

目录

引言

1.<stdio.h>(标准输入输出库)

1.1 简介

1.2 库变量

1.3 库宏

1.4 库函数


🌈你好呀!我是 程序猿

🌌 2024感谢你的陪伴与支持 ~

🚀 欢迎一起踏上探险之旅,挖掘无限可能,共同成长!


引言

        C 语言是一种通用的、面向过程式的计算机程序设计语言。1972 年,为了移植与开发 UNIX 操作系统,丹尼斯·里奇在贝尔电话实验室设计开发了 C 语言。

        C 语言是一种广泛使用的计算机语言,它与 Java 编程语言一样普及,二者在现代软件程序员之间都得到广泛使用。

        C 标准库(C Standard Library)包含了一组头文件,这些头文件提供了许多函数和宏,用于处理输入输出、字符串操作、数学计算、内存管理等常见编程任务。

1.<stdio.h>(标准输入输出库)

1.1 简介

        <stdio.h>提供了用于输入和输出操作的函数,如printf(格式化输出)、scanf(格式化输入)、getchar(从标准输入读取一个字符)、putchar(向标准输出写入一个字符)等。

1.2 库变量

<stdio.h> 中定义的变量类型
N0.变量 & 描述
1size_t
这是无符号整数类型,它是 sizeof 关键字的结果,表示对象大小。
2FILE
文件流类型,适合存储文件流信息的对象类型。
3fpos_t
文件位置类型,适合存储文件中任何位置的对象类型。

1.3 库宏

<stdio.h> 中定义的宏
N0.宏 & 描述
1NULL
这个宏是一个空指针常量的值。
2_IOFBF、_IOLBF 和 _IONBF
这些宏扩展了带有特定值的整型常量表达式,并适用于 setvbuf 函数的第三个参数。
3BUFSIZ
这个宏是一个整数,该整数代表了 setbuf 函数使用的缓冲区大小。
4EOF
这个宏是一个表示已经到达文件结束的负整数。
5FOPEN_MAX
这个宏是一个整数,该整数代表了系统可以同时打开的文件数量。
6FILENAME_MAX
这个宏是一个整数,该整数代表了字符数组可以存储的文件名的最大长度。如果实现没有任何限制,则该值应为推荐的最大值。
7L_tmpnam
这个宏是一个整数,该整数代表了字符数组可以存储的由 tmpnam 函数创建的临时文件名的最大长度。
8SEEK_CUR、SEEK_END 和 SEEK_SET
这些宏是在 fseek 函数中使用,用于在一个文件中定位不同的位置。
9TMP_MAX
这个宏是 tmpnam 函数可生成的独特文件名的最大数量。
10stderr、stdin 和 stdout
这些宏是指向 FILE 类型的指针,分别对应于标准错误、标准输入和标准输出流。

1.4 库函数

<stdio.h> 中定义的库函数
N0.函数 & 描述
1int fclose(FILE *stream)
关闭流 stream。刷新所有的缓冲区。
2void clearerr(FILE *stream)
清除给定流 stream 的文件结束和错误标识符。
3int feof(FILE *stream)
测试给定流 stream 的文件结束标识符。
4int ferror(FILE *stream)
测试给定流 stream 的错误标识符。
5int fflush(FILE *stream)
刷新流 stream 的输出缓冲区。
6int fgetpos(FILE *stream, fpos_t *pos)
获取流 stream 的当前文件位置,并把它写入到 pos。
7FILE *fopen(const char *filename, const char *mode)
使用给定的模式 mode 打开 filename 所指向的文件。
8size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
从给定流 stream 读取数据到 ptr 所指向的数组中。
9FILE *freopen(const char *filename, const char *mode, FILE *stream)
把一个新的文件名 filename 与给定的打开的流 stream 关联,同时关闭流中的旧文件。
10int fseek(FILE *stream, long int offset, int whence)
设置流 stream 的文件位置为给定的偏移 offset,参数 offset 意味着从给定的 whence 位置查找的字节数。
11int fsetpos(FILE *stream, const fpos_t *pos)
设置给定流 stream 的文件位置为给定的位置。参数 pos 是由函数 fgetpos 给定的位置。
12long int ftell(FILE *stream)
返回给定流 stream 的当前文件位置。
13size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
把 ptr 所指向的数组中的数据写入到给定流 stream 中。
14int remove(const char *filename)
删除给定的文件名 filename,以便它不再被访问。
15int rename(const char *old_filename, const char *new_filename)
把 old_filename 所指向的文件名改为 new_filename。
16void rewind(FILE *stream)
设置文件位置为给定流 stream 的文件的开头。
17void setbuf(FILE *stream, char *buffer)
定义流 stream 应如何缓冲。
18int setvbuf(FILE *stream, char *buffer, int mode, size_t size)
另一个定义流 stream 应如何缓冲的函数。
19FILE *tmpfile(void)
以二进制更新模式(wb+)创建临时文件。
20char *tmpnam(char *str)
生成并返回一个有效的临时文件名,该文件名之前是不存在的。
21int fprintf(FILE *stream, const char *format, ...)
发送格式化输出到流 stream 中。
22int printf(const char *format, ...)
发送格式化输出到标准输出 stdout。
23int sprintf(char *str, const char *format, ...)
发送格式化输出到字符串。
24int vfprintf(FILE *stream, const char *format, va_list arg)
使用参数列表发送格式化输出到流 stream 中。
25int vprintf(const char *format, va_list arg)
使用参数列表发送格式化输出到标准输出 stdout。
26int vsprintf(char *str, const char *format, va_list arg)
使用参数列表发送格式化输出到字符串。
27int fscanf(FILE *stream, const char *format, ...)
从流 stream 读取格式化输入。
28int scanf(const char *format, ...)
从标准输入 stdin 读取格式化输入。
29int sscanf(const char *str, const char *format, ...)
从字符串读取格式化输入。
30int fgetc(FILE *stream)
从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。
31char *fgets(char *str, int n, FILE *stream)
从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。
32int fputc(int char, FILE *stream)
把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符往前移动。
33int fputs(const char *str, FILE *stream)
把字符串写入到指定的流 stream 中,但不包括空字符。
34int getc(FILE *stream)
从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。
35int getchar(void)
从标准输入 stdin 获取一个字符(一个无符号字符)。
36char *gets(char *str)
从标准输入 stdin 读取一行,并把它存储在 str 所指向的字符串中。当读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。
37int putc(int char, FILE *stream)
把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符往前移动。
38int putchar(int char)
把参数 char 指定的字符(一个无符号字符)写入到标准输出 stdout 中。
39int puts(const char *str)
把一个字符串写入到标准输出 stdout,直到空字符,但不包括空字符。换行符会被追加到输出中。
40int ungetc(int char, FILE *stream)
把字符 char(一个无符号字符)推入到指定的流 stream 中,以便它是下一个被读取到的字符。
41void perror(const char *str)
把一个描述性错误消息输出到标准错误 stderr。首先输出字符串 str,后跟一个冒号,然后是一个空格。
42

int snprintf(char *str, size_t size, const char *format, ...)
格式字符串到 str 中。

 1.5 注意事项

  1. 使用 fopen 打开文件后,务必使用 fclose 关闭文件,以避免文件资源泄漏。
  2. 使用 fgets 读取字符串时,务必注意缓冲区的大小,以避免缓冲区溢出。
  3. 使用 printfscanf 等函数时,务必注意格式化字符串的正确性,以避免未定义行为。


期待批评指正,共同进步~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2106822.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电影票API接口对接全攻略,让你轻松对接API

电影票API接口对接是指将第三方电影票销售平台的服务集成到自己的应用程序或网站中&#xff0c;使用户能够直接购买电影票。这种集成通常通过API&#xff08;应用程序编程接口&#xff09;实现。以下是电影票API接口对接的一般步骤和注意事项&#xff1a; 一般步骤&#xff1a…

Trm理论 2(Word2Vec)

神经网络模型&#xff08;NNLM&#xff09;和Word2Vec NNLM模型是上次说过的模型&#xff0c;其目的是为了预测下一个词。 softmax(w2tanh(w1x b1)b2) 会得到一个副产品词向量 而Word2Vue就是专门求词向量的模型 softmax(w2*(w1*x b1)b2) Word2Vec softmax(w2*(w1*x b1)b…

期权虚值和实值的投资风险有什么不同?

今天带你了解期权虚值和实值的投资风险有什么不同&#xff1f;首先虚值期权与实值期权在本质上有一定的区别&#xff0c;两者并不是一个概念。 期权虚值合约 虚值期权又称价外期权&#xff0c;是指不具有内在价值的期权&#xff0c;即行权价高于标的现价的认购期权或行权价低…

stm32之外部flash下载算法

文章目录 下载算法下载到芯片的核心思想算法程序中擦除操作执行流程擦除操作大致流程&#xff1a;算法程序中编程操作执行流程算法程序中校验操作执行流程 创建MDK下载算法通用流程第1步&#xff0c;使用MDK提供好的程序模板第2步&#xff0c;修改工程名第3步&#xff0c;修改使…

【unity小技巧】使用Unity的Animation Layer和Avatar Mask把多个不同动画组合使用,实现人物不同部位播放不同的动画

文章目录 前言如何使用Unity的Animation Layer和Avatar Mask把多个动画组合使用游戏角色的疲劳感是如何制作的&#xff1f;利用Animation Layers中的additive模式把多个动画混合在一起如何制作角色的受伤状态&#xff1f;Unity动画层级&#xff08;Animation Layer&#xff09;…

在stable diffussion中控制生成图片的光线

在摄影中&#xff0c;光线起着至关重要的作用&#xff0c;它对图像的整体质量和氛围有着显著的影响。您可以使用光线来增强主题&#xff0c;创造深度和维度&#xff0c;传达情感&#xff0c;以及突出重要细节。 在这篇文章中&#xff0c;我会告诉你如何在stable diffussion中控…

【C++11】深入理解与应用右值引用

&#x1f525; 个人主页&#xff1a;大耳朵土土垚 &#x1f525; 所属专栏&#xff1a;C从入门至进阶 这里将会不定期更新有关C/C的内容&#xff0c;欢迎大家点赞&#xff0c;收藏&#xff0c;评论&#x1f973;&#x1f973;&#x1f389;&#x1f389;&#x1f389; 文章目录…

webCppCluster

1.通讯协议、接口协议、数据传输格式之间的区别&#xff1f; 通讯协议 在TCP/IP四层模型中&#xff0c;四层分别是&#xff1a;应用层、传输层、网络层、网络接口层。 应用层通讯协议的代表&#xff1a;HTTP HTTPS 主要规定传输消息的具体内容、什么格式传输、是请求还是相应…

ueditorplus百度编辑器集成秀米及135编辑器

备用地址&#xff1a;ueditorplus百度编辑器集成秀米及135编辑器 下载拉取&#xff1a;ueditorplus: UEditorPlus 是基于 UEditor 二次开发的富文本编辑器&#xff0c;让 UEditor 焕然一新,已集成秀米、135编辑器&#xff0c;会不定时更新&#xff01;&#xff01;&#xff01…

MobaXterm 终端工具使用

文章目录 MobaXterm 相关介绍下载安装 MobaXterm添加 SSH 连接 MobaXterm 相关介绍 MobaXterm 是一款功能强大的终端仿真器和远程计算工具&#xff0c;专为 Windows 用户设计&#xff0c;提供了一站式解决方案&#xff0c;以便在本地和远程计算环境中工作。它结合了终端仿真、S…

C++设计模式——Chain of Responsibility职责链模式

一&#xff0c;职责链模式的定义 职责链模式&#xff0c;又被称为责任链模式&#xff0c;是一种行为型设计模式&#xff0c;它让多个对象依次处理收到的请求&#xff0c;直到处理完成为止。 职责链模式需要使用多个对象&#xff0c;其中的每个对象要么处理请求&#xff0c;要…

『功能项目』坐骑UI搭建及脚本控制显/隐【19】

本章项目成果展示 我们打开上一篇18怪物消亡掉落宝箱的项目&#xff0c; 本章要做的事情是搭建一个坐骑UI界面&#xff0c;并通过键盘B键/右侧坐骑按钮控制坐骑UI界面的显示与隐藏 在背包Bag上创建一个父物体&#xff0c; 命名为Middle 修改Bag的尺寸 将下面资源图片放进Art文…

开源|FormCreate低代码表单在弹窗中渲染表单时表单的值没有正常清空解决方法

如何在弹窗中通过低代码表单 FormCreate 渲染表单&#xff0c;包括表单的配置、表单验证、以及表单提交的处理。 源码地址: Github | Gitee <template><div><!-- 触发弹窗的按钮 --><el-button type"primary" click"showDialog true&quo…

国家商用密码算法——SM1、SM2、SM3

1、SM1 SM1 是中国国家密码管理局&#xff08;SCA&#xff09;发布的国密算法之一&#xff0c;属于对称加密算法&#xff0c;其分组长度、秘钥长度都是128bit。 【注】对称加密算法是一种使用相同密钥进行数据加密和解密的加密方式。在这种算法中&#xff0c;发送方和接收方共…

将本地的 IntelliJ IDEA 项目导入到 GitLab 上——超详细图文教程

要将本地的 IntelliJ IDEA 项目导入到 GitLab 上&#xff0c;可以按照以下详细步骤进行操作&#xff1a; 1. 在 GitLab 上创建一个新的仓库 打开 GitLab 或公司内部的 GitLab 服务器。 登录你的 GitLab 账号。 点击右上角的 号按钮&#xff0c;然后选择 “New Project”。 …

清华MEM作业-利用管理运筹学的分析工具slover求解最优解的实现 及 通过使用文件或者套节字来识别进程的fuser命令

一、清华MEM作业-利用管理运筹学的分析工具slover求解最优解的实现 最近又接触了一些线性求解的问题&#xff0c;以前主要都是在高中数学里接触到&#xff0c;都是使用笔算&#xff0c;最后通过一些函数式得出最小或者最大值&#xff0c;最近的研究生学业上接触到了一个Excel s…

C++入门基础知识50——【关于C++数字】之C++ 数学运算

成长路上不孤单&#x1f60a;【14后&#xff0c;C爱好者&#xff0c;持续分享所学&#xff0c;如有需要欢迎收藏转发&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#xff01;&#xff01;&#xff01;&#xff01;&#xff…

C++string类相关OJ练习(2)

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 Cstring类相关OJ练习(2) 收录于专栏【C语法基础】 本专栏旨在分享学习C的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 1.反转字符串 …

录屏软件电脑,精选5款录屏神器推荐

嘿&#xff0c;朋友们&#xff01;想象一下&#xff0c;你正在与好友分享你最新的游戏成就&#xff0c;或是与同事展示你的最新项目进展&#xff0c;但却发现文字描述无法完美呈现你的精彩瞬间。别担心&#xff0c;在这个数字化的时代&#xff0c;我们有着无数种方式记录和分享…

大型集团行业ITSM案例分析报告

一、项目背景 随着信息化建设的不断推进&#xff0c;大型集团的信息系统规模迅速扩大&#xff0c;业务系统对IT的依赖程度逐渐加深&#xff0c;IT网络应用系统的复杂度也随之增加。然而&#xff0c;相对滞后的运维服务体系却未能同步跟进&#xff0c;运维要求不断提高的同时&a…