读书人

一个小疑点虚心求教

发布时间: 2012-10-18 13:46:55 作者: rapoo

一个小问题,虚心求教
FILE fp = fopen("a.txt","rt+");
char c[10] = "b";
char d[10] = "a";
fread(c, 1, 1, fp);
fwrite(d, 1, 1, fp);

发现这个字符没有给write进去。

a.txt中为文本:111111111

[解决办法]
首先,你这个代码第一行少了一个*,应该是FILE*

第二,fread会移动文件指针,所以正常的应该是改变a.txt的第二个字符。

第三,现在的操作系统为了提高IO效率,一般都有缓冲区,如果你的程序直接退出,应该会写入硬盘文件,否则你的写入可能还在内核的缓冲区。你需要调用fflush( fp )才能强制刷新到硬盘。注意,非特殊原因尽量避免调用fflush,它会将你的程序拖慢。

第四,最后记得调用fclose,虽然程序退出时,现在的操作系统会帮你做。
[解决办法]
fopen压根就没rw+这个mode。r+才是你要的
[解决办法]
信百度全身打滚。被骗到不知道哪里去了还在点头说人家好。

我这边r+没有问题。你需要提供更多的信息来说明a.txt怎么没有变化。
[解决办法]
有两种可能,第一种,打开文件失败。可以在代码中加入一句
if (!fp)
{
printf( "can't open file\n" );
return 0;
}

第二种可能,你的a.txt和程序不在同一路径,所以程序修改了另一个a.txt

读书人网 >软件架构设计

热点推荐