在C里面的FILE I/O[求助]
所在版块:求学狮城 发贴时间:2003-10-19 16:01

用户信息
复制本帖HTML代码
高亮: 今天贴 X 昨天贴 X 前天贴 X 
有一个问题,在对 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); 的话,程序的前两次循环是可以正确运行的,这又是为什么呢?
我想了一天也想不懂啊!!!
那位高手指教指教。万分感谢!!!
.
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!

Put your OWN COOL signature here!