再读文件时如果采用以下方式:
- while(!feof())
- {
- fread或fscanf
- ...
- ...
- }
如果被读的文件的末尾有空格或回车等,则读完最后一个数据后再判断while的条件是真,最后一次读的数据就会被复制一遍,采用如下形式则不会出现这种情况:
- while(1)
- {
- fwrite或fscanf();
- if(feof())
- break;
- ...
- ...
- }
放这备用
今天发现,用fwrite写文件,即使没有刻意的写空格,也会出现这种情况
代码如下:
int _tmain(
int argc, _TCHAR* argv[])
{
FILE *fp=fopen( "a", "wb");
float a=1.6868;
fwrite(&a, sizeof( float), 1, fp);
fclose(fp);
fp=fopen( "a", "rb");
while(!feof(fp))
{
fread(&a, sizeof( float), 1, fp);
printf( "%f ",a);
}
fclose(fp);
return 0;
}
{
FILE *fp=fopen( "a", "wb");
float a=1.6868;
fwrite(&a, sizeof( float), 1, fp);
fclose(fp);
fp=fopen( "a", "rb");
while(!feof(fp))
{
fread(&a, sizeof( float), 1, fp);
printf( "%f ",a);
}
fclose(fp);
return 0;
}
输出结果是:
转载于:https://blog.51cto.com/buptdtt/643400