为什么我没有为我正常工作,fwrite或fseek工作? - C

时间:2017-02-17 23:32:15

标签: c file binary fwrite fseek

我有以下问题,我一直想弄清楚,但我仍然无法解决。

我有一个二进制文件,其中包含0-9的1000个随机整数,我用这个代码完成了这个:

int main() {

FILE *fp;
int r, i;

char fp_string[600] = "/Users/mac/Library/Mobile Documents/com~apple~CloudDocs/College/Program With Persistent Data/Lab 3/num1000.bin";

fp = fopen(fp_string, "wb+");

srand(time(NULL));

for (i=0;i<1000;i++) {
    r = rand()%10; //returns a pseudo-random integer between 0 and 20
    fwrite(&r, sizeof(int), 1, fp);

}

fclose(fp);

return 0;

}

好的,这样工作正常,现在问题来了。如果我尝试使用fseek更改第三个值,然后阅读它,它就不会工作。

int main() {
FILE *fp;
int r, i;

char fp_string[600] = "/Users/mac/Library/Mobile Documents/com~apple~CloudDocs/College/Program With Persistent Data/Lab 3/num1000.bin";

fp = fopen(fp_string, "wb+");

r = 9;

if (fseek(fp, 3, SEEK_SET) == 0) {
    fwrite(&r, sizeof(int), 1, fp);
    fseek(fp, 3, SEEK_SET);
    fread(&i, sizeof(int), 1, fp);
    printf("\n\nr = %d, i = %d \n\n", r, i);
}

fclose(fp);
return 0;

}

&#39;我&#39;和&#39; r&#39;是相同的数字,但是,我试图显示所有的数字,他们都改变了(我显示如下)。我到处寻找,但我仍然无法找到任何东西。

在使用fseek和fwrite之前显示数字:

  

7 0 8 9 6 2 0 3 4 2 5 7 7 1 1 6 7 9 8 0 8 9 8 0 2 3 1 1 3 8 1 9 8 8 2 7 6 1 5 8 0 8 3 4 9 1 5 2 2 8 2 0 9 8 5 1 8 4 2 4 8 1 2 5 2 0 6 6 1 1 0 8 6 1 3 1 4 0 9 9 7 0 1 8 1 7 9 6 3 0 6 5 7 6 5 3 4 1 1 3 5 6 0 3 2 7 9 7 3 1 5 8 2 3 4 5 0 0 2 4 6 8 8 1 2 4 7 4 0 7 0 3 6 2 4 9 8 3 0 3 6 5 0 0 5 3 2 3 9 9 8 3 7 4 5 5 6 8 2 9 6 0 5 7 3 9 4 6 3 2 5 4 6 1 3 1 5 9 6 3 4 1 6 4 5 5 4 3 1 1 7 1 2 1 1 3 0 4 0 4 7 7 0 1 9 8 8 9 6 8 8 2 2 8 7 0 5 5 1 4 0 7 2 0 1 1 7 8 9 6 7 3 3 0 2 5 3 4 1 2 6 5 9 2 6 1 9 5 0 4 1 0 3 4 7 6 6 6 2 7 3 3 2 3 9 8 1 0 5 3 6 6 6 5 4 6 0 0 4 3 9 7 9 5 3 2 9 0 7 8 8 3 1 6 4 7 6 1 8 0 1 6 1 8 8 3 3 5 9 9 0 8 6 2 1 7 7 8 6 8 8 0 3 0 3 1 4 6 0 2 8 7 0 7 1 1 0 6 9 1 0 3 8 2 0 4 3 1 6 4 8 0 2 2 5 2 2 4 6 4 7 1 7 1 2 9 5 8 9 0 2 4 9 2 3 0 8 9 1 8 1 7 9 2 3 7 8 7 7 1 3 2 8 8 3 5 5 1 4 2 0 7 5 3 0 8 8 8 6 7 2 6 8 6 3 0 5 8 0 2 4 8 7 9 5 8 6 2 2 4 7 3 3 4 5 5 2 9 7 5 8 3 9 9 0 1 9 5 6 2 6 7 1 9 8 4 9 5 6 1 6 3 0 7 1 6 6 2 3 8 9 6 8 2 1 5 9 5 5 3 4 9 8 7 4 6 2 0 2 1 6 6 5 0 2 4 8 8 6 0 9 4 9 1 1 5 7 6 2 2 6 2 1 7 0 2 9 1 6 8 7 1 8 9 6 6 2 8 1 8 2 0 9 5 9 0 0 0 6 4 4 8 8 4 9 3 2 1 3 7 1 2 2 1 9 0 0 2 8 1 3 6 9 5 7 9 9 1 7 2 1 3 9 1 4 4 9 3 6 7 5 9 6 8 0 7 2 1 3 0 7 3 8 9 5 0 4 9 6 5 6 7 4 9 1 9 8 2 2 2 9 6 7 0 1 0 2 4 9 9 8 8 6 2 1 2 5 8 6 2 3 8 1 4 6 0 7 8 1 5 6 2 4 4 1 2 3 8 4 6 1 6 9 0 0 9 8 7 7 5 7 9 1 4 7 5 3 0 6 8 1 1 3 1 4 7 6 9 5 7 4 0 1 8 3 0 9 3 5 9 2 4 9 3 1 8 1 9 6 5 5 4 3 6 7 6 2 1 0 1 2 0 4 1 3 7 1 2 0 1 5 5 8 5 9 7 3 0 7 3 5 7 9 1 5 2 9 6 5 9 0 9 5 4 0 4 1 6 6 1 6 8 7 7 5 1 9 8 9 1 9 4 1 5 9 5 3 5 5 1 5 9 7 4 9 0 7 1 9 5 9 6 3 0 2 7 9 3 7 5 4 6 8 7 9 6 5 8 1 8 1 9 5 2 0 5 5 4 7 0 2 2 1 9 9 7 3 4 9 7 9 0 0 1 1 8 1 7 6 5 0 4 0 4 7 1 0 3 2 5 9 3 4 4 1 6 1 0 9 8 2 1 3 9 4 5 8 0 6 7 5 6 5 3 5 4 0 4 0 0 7 7 0 5 2 3 0 6 8 9 9 1 8 0 1 4 1 2 9 4 6 6 4 1 3 4 7 0 6 5 9 6 6 3 5 4 9 6 2 6 4 9 0 8 2 1 4 8 8 0 9 5 4 2 9 6 0 2 8 0 8 9 5 0 1 6 5 4 8 4 4 9 8 8 1 4 5 1 0 3 6 9 0 2 2 4 3 9 9 5 4 0 1 4 5 2 5 8 8 6 9 7 9 9 7 2 7 1 3 8 9 1 7 2 8 5 9 1 5 8 5 5 7 3 6 3 9 4 5

使用fseek和fwrite后显示数字:

  

150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150 994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150 994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150 994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150 994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150 994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150 994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150 994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150 994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150 994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150 994944

感谢您的帮助:)

1 个答案:

答案 0 :(得分:2)

在第二个清单中使用此行:

fp = fopen(fp_string, "wb+");

您将文件截断为零长度。

你想:

fp = fopen(fp_string, "rb+");

参考:fopen - open a stream