- 论坛徽章:
- 0
|
问题已经解决,随机写必须用fseek,不能用文件指针自动下移。
#include <stdio.h>
#include <stdlib.h>
void ReadData(FILE* fp)
{ int n,s;
int i;
rewind(fp);
fread(&n,sizeof(int),1,fp);
for(i=0;i<n;i++){
fread(&s,sizeof(int),1,fp);
printf("%d ",s);
}
}
void main()
{ FILE* fp;
int i;
int s;
int n=256;
int flag;
fp=fopen("n.txt","w+b");
if(fp==0){
puts("open file error");
exit(1);
}
fwrite(&n,sizeof(int),1,fp);/*输出数组大小*/
for(i=0;i<256;i++)
fwrite(&i,sizeof(int),1,fp);
ReadData(fp);
putchar('\n');
rewind(fp);
fread(&n,sizeof(int),1,fp);/*读入数组大小*/
/*修改数据*/
for(i=0;i<n;i++){
fseek(fp,4*(i+1),0);//随机读写必须加上这一行,至于具体原因未知。
s=i+1;//对应位加1.
//printf("%d ", ftell(fp) );
flag=fwrite(&s,4,1,fp);//flag=1,可是在读入数据时
//值还是不变,难道还要做其他
}
puts("");
ReadData(fp);
} |
|