繁体   English   中英

为什么fread,fwrite或fseek对我来说无法正常工作? - C

[英]Why isn't fread, fwrite or fseek working properly for me? - C

我有以下问题,我一直在试图解决,但仍然无法解决。

我有一个二进制文件,该文件具有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;

}

“ i”和“ r”是相同的数字,但是,我试图显示所有数字,但它们都被更改了(如下面所示)。 我到处都看了,但仍然找不到。

在使用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 5 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 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 2 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 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 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944

谢谢您的帮助 :)

第二行中的这一行:

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

您正在将文件截断为零长度。

你要:

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

参考: fopen-打开流

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM