c语言标准头文件(部分)

stdarg.h
简介
stdarg.h 头文件定义了一个变量类型 va_list 和三个宏,这三个宏可用于在参数个数未知(即参数个数可变)时获取函数中的参数.
可变参数的函数通在参数列表的末尾是使用省略号(,…)定义的.
库变量
下面是头文件 stdarg.h 中定义的变量类型:在这里插入图片描述
库宏
下面是头文件 stdarg.h 中定义的宏:在这里插入图片描述
VA_LIST的用法
首先在函数里定义一具VA_LIST型的变量,这个变量是指向参数的指针;
然后用VA_START宏初始化变量刚定义的VA_LIST变量;
然后用VA_ARG返回可变的参数,VA_ARG的第二个参数是你要返回的参数的类型(如果函数
有多个可变参数的,依次调用VA_ARG获取各个参数);
最后用VA_END宏结束可变参数的获取.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用VA_LIST应该注意的问题
因为va_start, va_arg, va_end等定义成宏,所以它显得很愚蠢,可变参数的类型和个数完全在该
函数中由程序代码控制,它并不能智能地识别不同参数的个数和类型. 也就是说,你想实现智能识
别可变参数的话是要通过在自己的程序里作判断来实现的.
另外有一个问题,因为编译器对可变参数的函数的原型检查不够严格,对编程查错不利.不利于我们写出高质量的代码.
由于参数的地址用于VA_START宏,所以参数不能声明为寄存器变量,或作为函数或数组类
型.
stdio.h
简介
stdio .h 头文件定义了三个变量类型、一些宏和各种函数来执行输入和输出.

库变量
在这里插入图片描述
库宏
在这里插入图片描述
库函数


函数&描述
1
int fclose(FILE *stream)
关闭文件
2
void clearerr(FILE *stream)
清除文件的文件结束和错误标识符
3
int feof(FILE *stream)
判断文件是否读取结束
4
int ferror(FILE *stream)
判断文件是否发生错误
5
int fflush(FILE *stream)
刷新输出缓冲区
6
int fgetpos(FILE *stream,fpos_t *pos)
获取文件指针的当前位置,并写入到pos
7
FILE fopen(char *fiIeName,char *mode)
使用指定的模式 mode 打开 filename 所指向的文件
8
size_t fread(void *ptr,size_t size,size_t count ,FILE
*stream)
从指定的文件流中读取数据到ptr所指向的数组中
9
FILE *freopen(const char *filename, const char *mode, FILE
*stream)
把一个新的文件名 filename 与给定的打开的流 stream 关联,同时关闭流中的旧文件
10 int fseek(FILE *stream, long int offset, int whence)
设置流的文件位置为offset,从whence开始便宜,正数向后便宜,负数向前偏移.
11 int fsetpos(FILE *stream, const fpos_t *pos)
设置文件位置为pos.
12 long int ftell(FILE *stream)
返回文件指针的当前位置
13
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE
*stream)
把 ptr 所指向的数组中的数据写入到给定流 stream 中
14 int remove(const char *filename)
删除指定的文件,filename是路径+文件名
15
int rename(const char *old_filename, const char
*new_filename)
把 old_filename 的文件名改为 new_filename。
16 void rewind(FILE *stream)
设置文件位置为给定流 stream 的文件的开头
17 void setbuf(FILE *stream, char *buffer)
定义流 stream 应如何缓冲。
18 int setvbuf(FILE *stream, char *buffer, int mode, size_t size)
另一个定义流 stream 应如何缓冲的函数。
19 FILE *tmpfile(void)
以二进制更新模式(wb+)创建临时文件
20 char *tmpnam(char *str)
生成并返回一个有效的临时文件名,该文件名之前是不存在的
21 int fprintf(FILE *stream, const char *format, …)
发送格式化输出到流 stream 中。
22 int printf(const char *format, …)
发送格式化输出到标准输出 stdout。
23 int sprintf(char *str, const char *format, …)
发送格式化输出到字符串。
24 int vfprintf(FILE *stream, const char *format, va_list arg)
使用参数列表发送格式化输出到流 stream 中
25 int vprintf(const char *format, va_list arg)
使用参数列表发送格式化输出到标准输出 stdout
26 int vsprintf(char *str, const char *format, va_list arg)
使用参数列表发送格式化输出到字符串。
27 int fscanf(FILE *stream, const char *format, …)
从流 stream 读取格式化输入。
28 int scanf(const char *format, …)
从标准输入 stdin 读取格式化输入。
29 int sscanf(const char *str, const char *format, …)
从字符串读取格式化输入。


函数&描述
30 int fgetc(FILE *stream)
从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。
31
char *fgets(char *str, int n, FILE *stream)
从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内.当读取 (n-1) 个字符
时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。
32
int fputc(int char, FILE *stream)
把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符
往前移动。
33 int fputs(const char *str, FILE *stream)
把字符串写入到指定的流 stream 中,但不包括空字符
34 int getc(FILE *stream)
从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动.
35 int getchar(void)
从标准输入 stdin 获取一个字符(一个无符号字符).
36
char *gets(char *str)
从标准输入 stdin 读取一行,并把它存储在 str 所指向的字符串中.当读取到换行符时,或
者到达文件末尾时,它会停止,具体视情况而定
37
int putc(int char, FILE *stream)
把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符
往前移动
38 int putchar(int char)
把参数 char 指定的字符(一个无符号字符)写入到标准输出 stdout 中
39
int puts(const char *str)
把一个字符串写入到标准输出 stdout,直到空字符,但不包括空字符。换行符会被追加到
输出中
40
int ungetc(int char, FILE *stream)
把字符 char(一个无符号字符)推入到指定的流 stream 中,以便它是下一个被读取到的字

41
void perror(const char *str)
把一个描述性错误消息输出到标准错误 stderr.首先输出字符串 str,后跟一个冒号,然后
是一个空格
42 int snprintf(char *str, size_t size, const char *format, …)
格式字符串到 str 中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忄离殇昔逝噬石心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值