C标准库函数-1 stdio.h

这篇博客详细介绍了C语言中的stdio.h头文件,包括文件操作如fopen、fclose等,格式化输出如printf、fprintf,格式化输入如scanf、fscanf,字符输入输出函数如fgetc、getc等,以及文件定位和错误处理函数。内容源于教学资料并进行了补充和完善,将持续更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

stdio.h

size_t:是由运算符sizeof产生的无符号整类型;
fpos_t:类型定义能够唯一说明文件中的每个位置的对象。
EOF:其值代表文件的结尾。

文件操作

fopen

FILE *fopen(const char *filename, const char *mode);
返回:成功为FILE指针,失败为NULL
打开以filename所指内容为名字的文件,返回与之关联的流。
mode决定打开的方式,以文本模式打开的可选值如下,以二进制模式打开的(rb\wb\ab\rb+\wb+\ab+)类似,不在赘述:
mode 含义 若文件不存在 打开后文件指针位置 是否清空原有内容 读写位置
r 只读 打开失败 开头 任意位置读取,不可写入
w 只写 新建 开头 不可读取,任意位置写入 写入时会覆盖原有位置内容
a 只写 新建 结尾 不可读取,只能尾部写入
r+ 读写 打开失败 开头 任意位置读、写 写入时会覆盖原有内容
w+ 读写 新建 开头 任意位置读、写 写入时会覆盖原有内容
a+ 读写 新建 结尾 任意位置读,只能尾部写入
注:带"+"号的,即可读可写模式下,在写操作和读操作的交替过程中,要注意使用fflush()或文件定位函数fseek()、fsetpos()、rewind()等重新定位文件指针的位置。

freopen

FILE *freopen(const char *filename, const char *mode, FILE *stream);
返回:成功为stream,失败为NULL
以mode指定的方式打开文件filename,并使该文件与流stream相关联。freopen()先尝试关闭与stream关联的文件,不管成功与否,都继续打开新文件。
该函数的主要用途是把系统定义的标准流stdin、stdout、stderr重定向到其他文件。

fread

size_t fread(void *buf, size_t size, size_t count, FILE *stream);
返回:实际读入的对象数
从流stream中读入最多count个长度为size个字节的对象,放到buf指向的数组中。
返回值可能小于指定读入数,原因可能是出错,也可能是到达文件尾。实际执行状态可用feof()或ferror()确定。

fwrite

size_t fwrite(const void *buf, size_t size, size_t count, FILE *stream);
返回:实际输出的对象数
把buf指向的数组中count个长度为size的对象输出到流stream中,并返回被输出的对象数。如果发生错误,则返回一个小于count的值。

fflush

int fflush(FILE *stream);
返回:成功为0,失败返回EOF
对输出流(写打开),fflush()用于将已写到缓冲区但尚未写出的全部数据都写到文件中;对输入流,其结果未定义。如果写过程中发生错误则返回EOF,正常则返回0。
fflush(NULL)用于刷新所有的输出流。
程序正常结束或缓冲区满时,缓冲区自动清仓。

fclose

int flcose(FILE *stream);
返回:成功为0,失败返回EOF
刷新stream的全部未写出数据,丢弃任何未读的缓冲区内的输入数据并释放自动分配的缓冲区,最后关闭流。

remove

int remove(const char *filename);
返回:成功为0,失败为非0值
删除文件filename。

rename

int rename(const char *oldfname, const char *newfname);
返回:成功为0,失败为非0值
把文件的名字从oldfname改为newfname。

tmpfile

FILE *tmpfile(void);
返回:成功为流指针,失败为NULL
以方式"wb+"创建一个临时文件,并返回该流的指针,该文件在被关闭或程序正常结束时被自动删除。

tmpnam

char *tmpnam(char s[L_tmpnam]);
返回:成功为非空指针,失败为NULL
若参数s为NULL(即调用tmpnam(NULL)),函数创建一个不同于现存文件名字的
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值