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 向文件读写字符
函数名调用形式返回值
fgetcfgetc(fp)读成功,带回所读的字符,失败则返回文件结束标志EOF(即-1)
fputcfputc(ch,fp)输出成功,返回值就是输出的字符;输出失败,则返回EOF(即-1)
2.2 向文件读写字符串
函数名调用形式返回值
fgetsfgets(str,n,fp)读成功,返回地址str,失败则返回NULL
fputsfputs(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_SET0
文件当前位置SEEK_CUR1
文件末尾位置SEEK_END2

fseek函数调用例子:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值