设为首页 加入收藏

TOP

C Traps and Pitfalls(1)
2014-11-23 23:11:48 来源: 作者: 【 】 浏览:2
Tags:Traps and Pitfalls


fread 和 fwrite 不能接连着使用,通常要在他们中间加fseek, 这是为了保持与以前程序的向下兼容性。

如以下程序,无论加不加fseek,都能编译并且执行通过,fread和fwrite都表示完成了任务。然而实际上,如果没有fseek这句话,fwrite并没有将字符写入文件。

view sourceprint 01 #include

02 #include

03 using namespace std;

04

05 int main()

06 {

07 FILE *fp = fopen("test.txt", "r+");

08 if (NULL == fp)

09 {

10 fprintf(stderr,"open file \"test.txt\" failed");

11 exit(1);

12 }

13 char buf[256] = {0};

14 size_t byteRead = fread(buf, sizeof(char), 10, fp);

15 for (int i=0; i

16 {

17 if (buf[i] > 'a' && buf[i] < 'z')

18 {

19 buf[i] = buf[i] + 'A' - 'a';

20 }

21 }

22 //fseek(fp, -10, 1);

23 size_t byteWrite = fwrite(buf, sizeof(char), byteRead, fp);

24 if (byteRead != byteWrite)

25 {

26 fprintf(stderr, "read and write error");

27 exit(1);

28 }

29 fclose(fp);

30 return 0;

31 }

作者“ChenQi的博客”

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇memcpy函数的实现要点 下一篇获取私有变量的值

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: