登录 | 首页 -> 华新鲜事 -> 求学狮城 | 切换到:传统版 / sForum | 树形列表
在C里面的FILE I/O[求助]
<<始页  [1]  末页>> 

在C里面的FILE I/O[求助]有一个问题,在对 FILE 进行 input and output 操作时,她的 fseek, fputc, fread...等等的function 和她的file pointer 到底是怎样工作的? 如果有一个程序:

#include<stdio.h>
#include<ctype.h>
#include<string.h>
main()
{
FILE *test;
char ch;
test = fopen("test.dat","r+");
while( (ch = fgetc ( test )) != EOF )
{

fseek(test, (-1)*sizeof(char), SEEK_CUR);
if( islower(ch))
{
ch = toupper(ch);
}
else
{
ch = tolower(ch);
}
fputc( ch, test );
}
fclose(test);
}



test.dat 是一个已经有的文件。假如是:abcde
程序无限循环,用Ctrl+C结束程序,其运行结果是:
ABBBBBBBBB...BBBBBBBBb

如果在
fputc( ch, test );
后面加上,fflush(test);
那程序就能正确运行。
这是为什么呢?
可以看到不加 fflush(test); 的话,程序的前两次循环是可以正确运行的,这又是为什么呢?
我想了一天也想不懂啊!!!
那位高手指教指教。万分感谢!!!
[阿多奈 (10-19 16:01, Long long ago)] [ 传统版 | sForum ][登录后回复]1楼


<<始页  [1]  末页>> 
登录 | 首页 -> 华新鲜事 -> 求学狮城 | [刷新本页] | 切换到:传统版 / sForum