C语言对文件的输入输出

C的数据文件由一连串的字符(或字节)组成,而不考虑行的界限,两行数据间不会自动加分隔符,对文件的存取是以字符(字节)为单位的。输入输出数据流的开始和结束仅受程序控制而不受物理符号(如回车换行符)控制,这就增加了处理的灵活性。这种文件称为流式文件。


一、打开与关闭文件

1.1 C语言用标准输入输出函数fopen来实现打开文件,fopen函数的调用方式为:

fopen(文件名,使用文件方式) //示例fopen( ” a1 “, ” r ” );
返回值:失败返回NULL
文件使用方式:
“r”(只读) “w”(只写) “a”(追加) “rb”(二进制只读) “wb”(二进制只写) “ab”(二进制追加)
“r+”(打开文本文件读写) “w+”(建立一个新的文本文件读写) “a+”(打开一个文本文件读写)
“rb+”(打开一个二进制文件读写) “wb+”(建立一个新的二进制文件读写) “ab+”(读写)

1.2 用fclose函数关闭数据文件

fclose函数调用的一般形式为 fclose(文件指针);

二、顺序读写数据文件

2.1 向文件读写字符
函数名 调用形式 返回值
fgetc fgetc(fp) 读成功,带回所读的字符,失败则返回文件结束标志EOF(即-1)
fputc fputc(ch,fp) 输出成功,返回值就是输出的字符;输出失败,则返回EOF(即-1)
2.2 向文件读写字符串
函数名 调用形式 返回值
fgets fgets(str,n,fp) 读成功,返回地址str,失败则返回NULL
fputs fputs(str,fp) 输出成功,返回0;否则返回非0值

例:
char str[10];
fgets(str, 10, fp); //从fp指向的文件读入一个长度为9的字符串,并添加结束符‘\0’,存放到字符数组str中

2.3 用格式化的方式读写文件

fprintf(文件指针,格式字符串,输出表列)
fscanf(文件指针,格式字符串,输入表列)
例如:
fprintf( fp, “%d,%6.2f”, i, f); //返回值:失败则返回EOF
fscanf( fp, “%d,%f”, &i, &f);

2.4 用二进制方式向文件读写一组数据

fread( buff, size, count, fp); //返回值:成功则返回count的值
fwrite( buff, size, count, fp);
例如:
fread( f, 4, 10, fp); //从fp所指向的文件读入10个4个字节的数据,存储到数组f中

三、随机读写数据文件

3.1 文件位置标记的定位

(1) 用rewind函数使文件位置标记指向文件开头:rewind(fp)
(2) 用fseek函数改变文件位置标记:fseek(文件类型指针,位移量,起始点)

起始点 名字 用数字代表
文件开始位置 SEEK_SET 0
文件当前位置 SEEK_CUR 1
文件末尾位置 SEEK_END 2

fseek函数调用例子:

函数调用 作用
fseek(fp, 100L, 0); 将文件位置标记向前移到离文件开头100个字节处
fseek(fp, 50L, 1); 将文件位置标记向前移到离当前位置50个字节处
fseek(fp, -10L, 2); 将文件位置标记从文件末尾处向后退10个字节

你可能感兴趣的:(C语言,文件操作,输入输出)