文件的读写
数据块IO fread与fwrite
注意:如果读到文件末尾或者读取出错时返回EOF。
EOF是一个计算机术语,为End Of File的缩写,在操作系统中表示资料源无更多的资料可读取。资料源通常称为档案或串流。通常在文本的最后存在此字符表示资料结束。
/*读取一个文件并在屏幕上显示出来*/
char ch = fgetc(fp);
while(ch != EOF)
{
putchar(ch); //输出一个字符
ch = fgetc(fp); //继续读取一个字符
}
此外,还有feof()函数可以判断文件是否为空或者文件是否结束
feof()是检测流上的文件结束符的函数,如果文件结束,则返回非0值,否则返回0
#include<stdio.h>
int main(void)
{
FILE *p;
p = fopen("open.txt", "r");
getc(p);
if (feof(p))
{
printf("文件为空。");
}
else
{
rewind(p);//将光标跳回到文件开头
int a;
fscanf(p,"%d",&a); //扫描文件流p,将内容赋值给a
printf("%d", a); //输出a
}
return 0;
}
1.数据块I/O:fread与fwrite
函数原型:
size_t fread(void *buffer,size_t size, size_t count,FILE *fp)
size_t fwrite(void *buffer,size_t size, size_t count,FILE *fp)
功能:读/写数据块
返值:成功,返回读/写的块数;出错或文件尾,返回0
说明:
typedef unsigned size_t;
buffer: 指向要输入/输出数据块的首地址的指针
size: 每个要读/写的数据块的大小(字节数)
count: 要读/写的数据块的个数
fp: 要读/写的文件指针
fread与fwrite 一般用于二进制文件的输入/输出
2. fwrite写入数据
在内存和文本中查看结果:
这个函数以二进制形式对文件进行操作,不局限于文本文件
返回实际写入的数据块数目
3.fread读取数据
从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功或读到文件末尾返回 0。
如果返回值与count不相同,则可能文件结尾或发生错误
输出结果:
4.格式化IO-fprintf与fscanf
1.格式化I/O:fprintf与fscanf
函数原型:
int fprintf(FILE *fp,const char *format[,argument,…])
int fscanf(FILE *fp,const char *format[,address,…])
功能:按格式对文件进行I/O操作
返值:成功,返回I/O的个数;出错或文件尾,返回EOF
其中,FILEfp为文件指针,constcharformat以什么样的格式输出,[argument]为输入列表
(1). fprintf写入数据
输出结果:
(2). fscanf读取数据
从一个流中执行格式化输入,fscanf遇到空格和换行时结束
输出结果:
文本文件的操作总结
按照行读写文本文件
1.字符串的读取
然后运行,读取了所有的字符串。
2.字符串的查找
输入需要插入的函数:#inloud<string.h>
按照一行一行的方式进行检索