У меня проблемы с fwrite () и fread () - PullRequest
1 голос
/ 09 мая 2020
#define ARRAY_SIZE 10

#include <iostream>
using namespace std;

int main()
{
    // create array mas1 of ARRAY_SIZE integers and fill it with random values
    int array1[ARRAY_SIZE]{ 10, 78, 23, 81, 50, 15, 24, 26, 90, 59 };

    // write ARRAY_SIZE integers from array1[] to f1.txt
    FILE* f1;
    fopen_s(&f1, "f1.txt", "w+");
    fwrite(array1, sizeof(array1[0]), ARRAY_SIZE, f1);

    // read ARRAY_SIZE integers from f1.txt to array2[]
    fseek(f1, 0, SEEK_SET);
    int array2[ARRAY_SIZE];
    fread(array2, sizeof(array2[0]), ARRAY_SIZE, f1);

    // print array1
    cout << "array1: ";
    for (int i = 0; i < 10; i++)
    {
        cout << array1[i] << " ";
    }
    cout << endl;

    // print array2
    cout << "array2: ";
    for (int i = 0; i < 10; i++)
    {
        cout << array2[i] << " ";
    }
}

вывод:
array1: 10 78 23 81 50 15 24 26 90 59
array2: 10 78 23 81 50 15 24 -858993460 -858993460 -858993460

Почему вывод array1 обычно, но array2 - нет?
Я использую Visual Studio 2019

1 Ответ

0 голосов
/ 09 мая 2020

Измените свой fwrite как

fwrite(array1, sizeof(int), ARRAY_SIZE, f1);

и fread как

fread(array2, sizeof(int), ARRAY_SIZE, f1);
fclose(f1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...