在做书上的题时发现文件指针移动中的字节并不是该变量的大小而是该变量在文本/文件上输出的字节数
代码如下:
#include#include #define N 10 void Write(FILE *fp){ int n; for(int i = 0; i < N; i++){ int num; printf("请输入第%d个数:", i+1); scanf("%d", &num); fprintf(fp, "%d,", num); n = ftell(fp); printf("当前文件指针的位置是%dnn", n); } printf("文件输入完毕!nn"); } void Read(FILE *fp){ int num, n; fseek(fp, -6, 2); num = ftell(fp); printf("读取时文件指针的位置是%dn", num); fscanf(fp, "%d,", &n); printf("倒数第三个数的值为%dn", n); } int main(void){ FILE *fp; if((fp = fopen("D:\num.txt", "wb+")) == NULL){ printf("fail to create the file"); exit(0); } Write(fp); Read(fp); return 0; }
这里文件指针读取时是按文本上的字节来算
所以如果写的值为"1,"在文本中就占两个字节 若是"12,"则占3个字节以此类推
所以题目设置是"个位非负整数 " 意思就是固定每次写入时只占用2字节指针位置也向后移动2个位置
所以将文件指针定位到-6就是读取倒数第三个了
文本中内容为:
测试:
C语言初学者,若有错误请指出!



