Chinaunix首页 | 论坛 | 博客
  • 博客访问: 988146
  • 博文数量: 158
  • 博客积分: 4380
  • 博客等级: 上校
  • 技术积分: 2367
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-21 10:45
文章分类

全部博文(158)

文章存档

2012年(158)

我的朋友

分类: C/C++

2012-11-21 10:21:57

#include

int main( void )
{
    FILE* fp = fopen( "D:\\test.txt", "r+" ); // 文件内容:12345

    char c;
    fread( &c, 1, 1, fp ); // 函数返回1,c为'1' --- 也就是一切正确
    // fseek(fp,0,SEEK_CUR); --- []和[]说加上这一句就好了

    fwrite( "a", 1, 1, fp ); // 函数返回1 --- 也就是一切正确

    fclose( fp ); // 函数返回0 --- 也就是一切正确,然而文件内容仍然为 12345 而没有变为 1a345
    return 0;
}

 

阅读(2081) | 评论(8) | 转发(0) |
给主人留下些什么吧!~~

网友评论2012-11-21 10:23:29

argentmoon
星星大哥,aiby说的对,今天我翻了下UNIX环境高级编程一书,居然把以前看过的一段话给忘记了……

ouput cannot be directly followed by input without an intervening fflush, fseek, fsetpos, or rewind.

Input cannot be directly followed by output without an intervening fseek, fsetpos, or rewind, or an input operation that encounters an end of file.

网友评论2012-11-21 10:23:20

局部变量
貌似fwrite有问题, 应该设置一个标志位而没设, 向ms举报吧:)

另:
vs2005, fwrite.c, line 81: 应该是一个注释错误

网友评论2012-11-21 10:23:10

web
我也遇到过类似问题,而且遇到过在某个WINDOWS下正常,另外一个WINDOWS又不正常,在WINDOWS下还是用API比较安全。