|
|
|
|
复制本帖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!
|
|