关于 文件位置标记 的困惑。
/* 此程序是将 file1.txt 的内容 复制到 file2.txt 中我的困惑是 :
1. 文件位置标记 是什么 ,
ps : 我原以为 fp1 就是 文件位置标记,现在发现不对。
2. feof(fp1) 与 rewind(fp1) 都改变了 文件位置标记 么?
搞不清楚 函数 内部 干了什么。
麻烦 路过的朋友 帮忙解释一下 ,多谢了。
*/
程序代码:
#include<stdio.h> int main() { FILE *fp1,*fp2; fp1=fopen("file1.txt","r"); fp2=fopen("file2.txt","w"); while(!feof(fp1)) { putchar(getc(fp1)); printf("previous=%p\n",fp1); // 输出 file1 的地址 . } putchar('\n'); printf("current =%p\n",fp1); // 再次 输出 file1 的地址 ,发现没变 . rewind(fp1); // // 注意到 fp1 没变,本来想把 rewind(fp1) 这句话 去掉, // 发现不对 , 看来 fp1 不是 文件位置标记。 //实现 复制 的部分 (需 重置 文件位置标记)。 while(!feof(fp1)) { putc(getc(fp1),fp2); //printf("%p\n",fp1); } fclose(fp1); fclose(fp2); return 0; }