- 论坛徽章:
- 0
|
对于如下的代码,我向文件里面写入三个数.为什么我读出的时候却读了四次,虽然最后一次什么都没有读出来. 想请教一下为什么在读了三个数之后feof()仍然认为没有到达文件末尾呢?
谢谢指教!
- #include<stdio.h>
- #include<stdlib.h>
- int main()
- {
- float a[3];
- float b[3];
- FILE* fp;
- int i;
- for (i = 0; i < 3; i++)
- scanf("%f", &a[i]);
- if ((fp = fopen("test.txt", "w+")) == NULL)
- {
- printf("fopen error\n");
- exit(1);
- }
- for (i = 0; i < 3; i++)
- {
- printf("a[%d]=%f\tat position %p\n",i, a[i], &a[i]);
- fwrite(&a[i], 4, 1, fp);
- }
- fclose(fp);
- if ((fp = fopen("test.txt", "r")) == NULL)
- {
- printf("fopen 2 error\n");
- exit(1);
- }
- i = 0;
- printf("\n");
- while (!feof(fp))
- {
- fread(&b[i], 4, 1, fp);
- printf("b[%d]=%f\tat position %p\n", i, b[i], &b[i]);
- i++;
- }
- printf("i = %d\n", i);
- for (i = 0; i < 3; i++)
- {
- printf("%f\t", b[i]);
- }
- return 0;
- }
复制代码 |
|