一个小问题,虚心求教
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