在C里面的FILE I/O[求助]
登录 | 论坛导航 -> 华新鲜事 -> 求学狮城 | 本帖共有 1 楼,分 1 页, 当前显示第 1 页 : 本帖树形列表 : 刷新 : 返回上一页
<<始页  [1]  末页>>
作者:阿多奈 (等级:2 - 初出茅庐,发帖:25) 发表:2003-10-19 16:01:31  楼主  关注此帖
在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); 的话,程序的前两次循环是可以正确运行的,这又是为什么呢?
我想了一天也想不懂啊!!!
那位高手指教指教。万分感谢!!!
Put your OWN COOL signature here!
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
论坛导航 -> 华新鲜事 -> 求学狮城 | 返回上一页 | 本主题共有 1 篇文章,分 1 页, 当前显示第 1 页 | 回到顶部
<<始页  [1]  末页>>

请登录后回复:帐号   密码