首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

一个小疑点,虚心求教

2012-10-18 
一个小问题,虚心求教FILE fp fopen(a.txt,rt+)char c[10] bchar d[10] afread(c, 1, 1,

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

热点排行