在这个帖子中,我们将要介绍I/O库中的下列库函数。
fopen、fclose fread、fwrite fflush- fseek- fgetc 、getc 、getchar fputc 、putc 、putchar fgets 、gets printf 、fprintf 、sprintf scanf 、fscanf 、sscanf首先是fopen函数。fopen函数的函数原型如下:
#include<stdio.h> FILE *fopen(const char *filename, const char *mode);fopen 打开由filename参数指定的文件,并且把它与一个文件流关联起来。mode参数指定文件的打开方式。
fread函数,函数原型如下:
#include<stdio.h> size_t fread(void *ptr,size_t size,size_t nitems,FILE *stream);
fread 从文件流stream中读到由ptr指向的数据缓冲区里。size指定每个数据记录的长度。计数器nitems给出要传输的记录的个数。
返回值是成功读到数据缓冲区里的记录的个数。当到达文件结尾时,它的返回值可能会小于nitems,甚至可以是0。
fwrite函数,函数原型如下:
#include<stdio.h> size_t fwrite(const void *ptr,size_t size,size_t nitems ,FILE *stream);
不推荐把fread和fwrite用于结构化数据,因为不同计算机体系结构之间可能不具备可移植性。
fclose函数,函数原型如下:
#include<stdio.h> int fclose(FILE *stream);
用于关闭stream指定的文件流。
fflush函数,函数原型如下:
#include<stdio.h> int fflush(FILE *stream);
作用是把文件流离得所有未写出的数据立刻写出。你可以用这个函数来确保在试图读入一个用户相应之前,先向终端送出一个交互提示符。
调用fclose之前默认隐含的调用了一次fflush();
fseek函数,函数原型如下:
#include<stdio.h> int fseek(FILE *stream,long int offset,int whence);
作用是与lseek系统调用对应的文件流函数。它在文件流里为下一次读写操作指定位置。
fgetc getc getchar函数,函数原型如下:
#include<stdio.h> int fgetc(FILE *stream); int getc(FILE *stream); int getchar();
fgetc函数从文件流里取出下一个字节并把它作为一个字符返回。
getc 的作用与fgetc的作用一样,但是有可能被实现为一个宏。
getchar的作用是相当于getc(stdin),它是从标准输入里读取下一个字符。
fputc putc putchar函数,函数原型如下:
#include<stdio.h> int fputc(int c,FILE *stream); int put(int c,FILE *stream); int putchar(int c);
fputc函数把一个字符写到输出文件流里面。
putc函数与fputc作用一样,但是它有可能被实现为一个宏。
putchar相当于把单个字符写到标准输出里面。
fgets gets函数,函数原型如下:
char *fgets(char *s, int n,FILE *stream); char *gets(char *s);
fgets从stream文件流中读取一个一个字符串,用s指向指向这个字符串。直到出现下面某种情况:遇到换行符,已经传输了n-1个字符,或者到达文件尾。
它会把遇到的换行符也传递到字符串里,再加上一个表示结尾的'\0'.,所以每次做多只能传输n-1个字符。
gets从标准输入中读取一个字符串。它在接受的字符串的尾部加上一个null。
格式化输入输出:
printf() sprintf() fprintf()函数,函数原型如下:
#include<stdio.h> int printf(const char *format,...); int sprintf(char *s,const char *format,...); int fprintf(FILE *stream,const char *format,...);
printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出
sprintf()字串格式化命令,主要功能是把格式化的数据写入某个字符串中。
fprintf()函数根据指定的format(格式)(格式)发送信息(参数)到由stream(流)指定的文件. fprintf()只能和printf()一样工作.
fprintf()的返回值是输出的字符数,发生错误时返回一个负值.
format格式:
%% 印出百分比符号,不转换。
%c 整数转成对应的 ASCII 字元。
%d 整数转成十进位。
%f 倍精确度数字转成浮点数。
%o 整数转成八进位。
%s 整数转成字符串。
%x 整数转成小写十六进位。
%X 整数转成大写十六进位。
scanf() fscanf() sscanf()函数,函数原型如下:
#include<stdio.h> int scanf(const char *format,...); int fscanf(char *s,const char *format,...); int sscanf(FILE *stream,const char *format,...);
sscanf() - 从一个字符串中读进与指定格式相符的数据.
scanf()从标准输入中读取指定的输入
fscanf()从文件中读入一个指定的输入
格式说明符
转换字符(就是%后跟的部分)
a 读浮点值(仅适用于 C99)
A 读浮点值(仅适用于 C99)
c 读单字符
d 读十进制整数
i 读十进制、八进制、十六进制整数
e 读浮点数
E 读浮点数
f 读浮点数
F 读浮点数(仅适用于 C99)
g 读浮点数
G 读浮点数
o 读八进制数
s 读字符串
x 读十六进制数
X 读十六进制数
p 读指针值
n 至此已读入值的等价字符数
u 读无符号十进制整数
[ ] 扫描字符集合
% 读 % 符号(百分号)
附加格式说明字符表修饰符说明
L/l 长度修饰符 输入"长"数据
h 长度修饰符 输入"短"数据
W 整型常数 指定输入数据所占宽度
* 表示本输入项在读入后不赋值给相应的变量
%% 印出百分比符号,不转换。
%c 整数转成对应的 ASCII 字元。
%d 整数转成十进位。
%f 倍精确度数字转成浮点数。
%o 整数转成八进位。
%s 整数转成字符串。
%x 整数转成小写十六进位。
%X 整数转成大写十六进位。