c语言文件操作疑问
在学习fopen/fgetc/fputc时遇到个问题:
首先创建一个文件文档,fp=fopen( "out.txt ", "wt+ ")
再写入一个字符:fputc( "w ",fp);
再读出这个字符并显示到屏幕上printf( "%c ",(fgetc(fp));
为什么得不到原来的那个 "w "字符呢?
但我在读之前fclose(fp);
再fp=fopen( "out.txt ", "rt ");
这样去printf( "%c ",(fgetc(fp));就可以得到正确的值,可以解释一下么?
tks
[解决办法]
你put之后文件内部的pos已经改变了,你get当然就get不到刚刚写进去的w.
close之后又open,pos又变回文件开头的位置,所以就能get到你的w了.
[解决办法]
我感觉,写文件时先内容写到缓冲区,等缓冲区满了才会往文件中写,文件关闭时,不论缓冲区是否满都会将缓冲区的内容写到文件中,所以没有关闭文件前,他可能没有写到文件中吧
[解决办法]
好象是
rewind
lseek....
[解决办法]
:sniperhuangwei() ( 一级(初级)) 信誉:100 2007-06-26 16:19:53 得分:0
?
你put之后文件内部的pos已经改变了,你get当然就get不到刚刚写进去的w.
close之后又open,pos又变回文件开头的位置,所以就能get到你的w了.
--------------------------
正解
你可以用
fseek()改变文件读写指针的位置