对文件进行读取操作,但是出现读取到数据为空或是数据有遗漏的情况,常见原因有以下两种:
1 文件没有成功打开
原因:在打开文件时,文件路径设置错误。
出现这个错误可以通过对文件指针是否为空进行排查。
解决办法:在执行文件打开命令后,一般要对文件指针进行判断是否为空,再执行剩下的命令。代码示例:
FILE *fp=NULL; //创建文件指针
fp=fopen("/root/code/file_rw/data","r"); //linux系统下注意 /root
//判断文件是否成功打开
if(fp!=NULL)
{printf("Open the file successful.\n");
}
else
{printf("Open the file fault!\n");exit(1); //退出程序
}
return 0;
2 文件打开成功,读取数据遗漏
在读取文件中的数据时,被读取的数据长度如果超过了用来存放数据的数组的长度,将会导致部分读取信息为空、数据缺失的情况。
如果该文件一共16行数据,每行最长22个字节,而代码中定义存放数据的数组str[20]长度仅为20,那么可能导致前面几行数据能够正常读取输出,后面部分的数据就为空。
代码示例:
FILE *fp=NULL; //创建文件指针fp=fopen("/root/code/file_rw/data","r"); //linux系统下注意 /root//判断文件是否成功打开if(fp!=NULL){printf("Open the file successful.\n");}else{printf("Open the file fault!\n");exit(1); //退出程序}char str[20];//对数组置零memset(str,0,20); //如果不执行该操作存入的数据可能出现乱码char ch;while((ch=fgetc(fp)!=EOF)) //判断是否到文件结束的位置{fgets(str,20,fp); //读取一行数据printf("%s\n",str); //打印输出读取的值}return 0;
-------- 如有侵权,联系删除。