Почему fread, fwrite или fseek не работают для меня должным образом? - С

У меня есть следующая проблема, которую я пытался выяснить, но все еще не могу.

У меня есть двоичный файл, который имеет 1000 случайных целых чисел от 0-9, код, с которым я сделал это:

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 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 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944 150994944

Спасибо за помощь:)

1 ответ

Решение

С этой строкой во втором листинге:

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

Вы обрезаете файл до нулевой длины.

Ты хочешь:

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

Ссылка: fopen - открыть поток

Другие вопросы по тегам