fseek指针移动
#include<stdio.h>#include<stdlib.h>
int main()
{ int i,n;
FILE *fp;
if((fp=fopen("temp","w+"))==NULL)
{ printf("不能建立temp文件\n");
exit(0);
}
for(i=1;i<=10;i++) fprintf(fp, "%3d",i);
for(i=0;i<10;i++)
{ fseek(fp, i* 3L ,SEEK_SET); //从文件头移动i*3个字节
fscanf(fp, "%d",&n);
fseek(fp, i* 3L ,0); //从文件头移动i*3个字节
fprintf(fp, "%3d",n+10);
}
当文件中被写入1,2,3,4,5,6,7,8,9,10后,经过第二个循环,文件内为11,12,13,14,15,16,17,18,19,20。
主要是对fseek中每次移动i*3个字节不理解,一个数字以ASCII码存储,占1个字节,为什么每次要移动3个字节?? 第11行,那不是有宽度的吗,在写入文件时,这个也是占位的 wp231957 发表于 2021-3-24 06:57
第11行,那不是有宽度的吗,在写入文件时,这个也是占位的
在三个宽度的情况下,比如当i=0时,fseek从文件头移动0个字节,此时指向的不是空格吗?再赋给n,为什么n就变成了1呢?
我把所有的3变成1后,竟然变成了乱码
谢谢!
页:
[1]