在用fflush函数时,按照下面的代码输出的是乱码:
/* fflush example */
#include <stdio.h>
char mybuffer[80];
int main()
{
FILE * pFile;
pFile = fopen ("example.txt","r+");
if (pFile == NULL) perror ("Error opening file");
else {
fputs ("test",pFile);
fflush (pFile); // flushing or repositioning required
fgets (mybuffer,80,pFile);
puts (mybuffer);
fclose (pFile);
return 0;
}
}
|
这是中的代码。
在 fflush( pFile )后流文件的位置是4,fgets( mybuffer, 80 , pFile ) 进 入 mybuffer中是4以后的字符,当然就是乱码了。
在下面的代码可以看出来:
/*=================================================================
: fflush example
: dependence : fflush.txt
==================================================================*/
#include <stdio.h>
int main()
{
FILE *pFile;
char buffer[30];
long size;
pFile = fopen( "fflush.txt" , "r+" );
if( pFile == NULL )
{
perror( "opening file failed :");
}
else
{
fputs( "test" ,pFile );
fflush( pFile );
size = ftell( pFile );
printf( "the current position is :%ld\n " , size );
fseek( pFile , 0 ,SEEK_SET);
size = ftell ( pFile);
printf( "the current position is :%ld\n " , size );
fgets( buffer , 30 , pFile );
//fputs( buffer, stdout );
puts(buffer);
fclose( pFile );
}
return 0;
}
|
printf( "the current position is :%ld\n " , size );第 一 次 输出的 是 4
第二次输出的是0;
加入
fseek( pFile , 0 ,SEEK_SET);
或 rewind( pFile );
就 正 常 了
++++++屏 幕输出++++++++
the current position is :4
the current position is :0
test
阅读(1118) | 评论(0) | 转发(0) |