标准I/O库

1、fopen函数

fopen打开由filename参数指定的文件,并把它与一个文件流关联起来,mode参数指定文件的打开方式,它取下列字符串中的值:

  • "r"或"rb":以只读方式打开
  • "w"或"wb":以写方式打开,并把文件长度截短为0
  • "a"或"ab":以写方式打开,新内容追加在文件尾
  • "r+"或"rb+"或"r+b":以更新方式打开(读和写)
  • "w+"或"wb+"或"w+b":以更新方式打开,并把文件截短为0
  • "a+"或"ab+"或"a+b":以更新方式打开,新内容追加在文件尾

函数原型:

# include <stdio.h>

FILE *fopen(const char *filename,const char *mode) 

2、fread函数

fread库函数用于从一个文件流里读取数据。数据从文件流stream读到由ptr指向的数据区里。fream和fwrite都是对数据记录进行操作,size参数指定每个数据记录的长度,计数器nitems给出要传输的记录个数,它的返回值是成功读到数据缓冲区里的记录个数(而不是字节数)。当到达文件尾时,它的返回值可能会小于nitems,甚至可以是0.

函数原型:

# include <stdio.h>

size_t fread(void *ptr, size_t size, size_t nitems, FILE *stream);

3、fwrite函数

fwrite函数与fread函数有相似的接口。它从指定的数据缓冲区里取出数据记录,并把它们写到输出流中。它的返回值是成功写入的记录个数。

函数原型:

# include <stdio.h>

size_t fwrite(const void *ptr, size_t size, size_t nitems, FILE *stream);

4、fclose函数

fclose函数关闭指定的文件流stream,使所有尚未写出的数据都写出。因为stdio库会对数据进行缓冲,所以fclose是很重要的。如果程序需要确保数据已经全部写出,就应该调用fclose虽然当程序正常结束时,会自动对所有打开的文件流调用fclose函数,但这样做就没有机会检查出由fclose报告的错误了。

函数原型:

# include<stdio.h>

int fclose(FILE *stream);

5、fflush函数

     fflush函数的作用是把文件流里所有未写出的数据立刻写出。例如,你可以用这个函数来确保在试图读入一个用户响应之前,先向终端送出一个交互提示符。使用这个函数还可以确保在程序继续执行之前重要的数据已经被写在了磁盘上。有时在调试程序时,你还可以用它来确认程序是正在写数据而不是被挂起了。注意:调用fclose函数隐含执行了一次flush操作

函数原型:

# include <stdio.h>

int fflush(FILE *stream, long int offset,int whence);

6、fget、getc、getchar函数

fgetc函数从文件流里取出下一个字节并把它作为一个字符返回。当它到达文件尾或者出现错误时,它返回EOF。

函数原型:

# include <stdio.h>

int fgetc(FILE *stream);
int getc(FILE *stream);
int getchar();

getc函数的作用和fgetc一样,但它有可能被实现为一个宏,如果是这样,stream参数就可能被计算不止一次,所以它不能有副作用(例如,它不能影响变量)。此外,你也不能保证能够使用getc的地址作为一个函数指针

getchar函数的作用相当于getc(stdin),它从标准输入里读取下一个字符

7、fputc、putc、putchar函数

fputc函数吧=把一个字符写到一个输出文件流中。它返回写入的值,如果失败,则返回EOF

函数原型:

# incllude <stdio.h>

int fputc(int c, FILE *stream);
int putc(int c,FILE *stream);
int putchar(int c);

类似于fgetc和getc之间的关系,putc函数的作用也相当于fputc,但它可能被实现为一个宏。

putchar函数相当于putc(c,stdout),它把单个文件写到标准输出。注意:putchar和getchar都是把字符当做int类型而不是char类型来使用的。这就允许文件尾(EOF)标识取值-1,这是一个超出字符数字编码范围的值

8、fgets和gets函数

fgets函数从输入文件流stream里读取一个字符串

函数原型:

# include <stdio.h>

char *fgets(char *s, int n, FILE *stream);
char *gets(char *s);

fgets把读到的字符写到s指向的字符串里,直到出现下面某种情况:遇到换行符,已经传输了n-1个字符,或者到达文件尾。它会把遇到的换行符也传递到接收字符串里,再加上一个表示结尾的空字节/0。一次调用最多只能传输n-1个字符,因为它必须把空字节加上以结束字符串。

当城管完成时,fgets返回一个指向字符串s的指针。如果文件流已经到达文件尾,fgets会设置这个文件流的EOF标识并返回一个空指针。

gets函数类似于fgets,只不过它从标准输入读取数据并丢弃遇到的换行符。它在接收字符串的尾部加上一个null字节

注意:gets对传输字符的个数没有限制,所以它可能会溢出自己的缓冲区。因此,你应该避免使用它并用fgets来代替。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值