- 论坛徽章:
- 0
|
刚刚看到一位网友的对于fwrite的问题, 我在测试的时候遇到如下问题, 望各位指教. 谢谢!
在windows下
对于如下的代码, 我在fwrite之后, 再调用fread, 如果是加了rewind的话, 则可以正常地读出这个文件的内容, 但是如果我不加rewind的话, 按道理现在已经是在文件的末尾了, 但是fread也会继续运行, 并且会在文件末尾不断地添加十六进制的CD.
如果是在linux下, 则不会出现这种情况.
请教各位是怎么回事. 谢谢!
- #include<stdio.h>
- #include<string.h>
- #include<stdlib.h>
- int main()
- {
- FILE *fp;
- char ch = 1;
- char buf[10] = "123";
- int n;
- if ((fp = fopen("./Debug/fseek2.txt", "w+")) == NULL)
- {
- printf("fopen error\n");
- exit(1);
- }
-
- n = fwrite(buf, 1, strlen(buf), fp);
-
- printf("n = %d\n", n);
- printf("ftell:%d\n", ftell(fp));
- rewind(fp);
- while (fread(&ch, 1, 1, fp) == 1)
- {
- printf("ch = %d\n", ch);
- }
-
- printf("out of while\n");
- if (feof(fp))
- printf("end of file\n");
- printf("ch1 = %d\n", ch);
- return 0;
- }
复制代码 |
|