Правильно ли я считываю числа из файла в массив?

Не могу понять, правильно ли я считываю числа из файла в массив. Если нет, прошу указать на ошибку, если да, то значит, ошибка где-то в другом месте моей программы.

Для понимания контекста: я заполняю сначала файл случайными числами, а потом эти числа оттуда считываю.

    int mass1[100000];
    int origmass[100000];
    int n = 0;

//тут другой кусок кода

    FILE* myfile;
    myfile = fopen("sort.txt", "w+");
    if (myfile != NULL)
    {
        printf("The file was successfully created\n");
        printf("Enter length of the array, [1, 100.000]:\n");
        scanf_s("%d", &n);
    
        for (int i = 0; i < n; i++)
        {
            mass1[i] = rand();
            fprintf(myfile, "%d", mass1[i]);
        }
        for (int i = 0; i < n; i++)
        {
            fscanf(myfile, "%d", &mass1[i]);
            origmass[i] = mass1[i];
        }

Размер массивов мне известен заранее, "origmass" мне нужен, чтобы потом отсортированный mass1 вернуть в первоначальное положение(часть большой программы).


Ответы (1 шт):

Автор решения: DmitryK

Не совсем понятен вопрос - что значит правильно ли считываю числа? Если вы их читаете из файла, все что записали - значит правильно.
Пройдите дебаггером. Или по совету @MBo попытайтесь считать в другой (пустой) массив и сравните с оригиналом.
Но вообще, между записью и чтением нужно либо переоткрывать файл, либо перемещать указатель потока на начало через fseek( );.
Ещё один момент - вы не задавались вопросом, правильно ли вы пишете в файл? Просто открыть файл в текстовом редакторе и посмотреть что вы туда записали? Ну и просто для тестирования - без генератора случайных чисел и с ограниченным размером массива.

int main()
{
    int mass1[] = { 0,1,2,3,4,5,6,7,8,9};
    int mass2[] = { 0,0,0,0,0,0,0,0,0,0};
    int n = 10;

    FILE* myfile = fopen("sort.txt", "w+");
    if (myfile == NULL)
       return -1;
        
    for (int i = 0; i < n; i++)
        fprintf(myfile, "%d", mass1[i]);

    return 0;
}

Посмотрите что внутри файла.
Ну или просто по логике - вы пишете в файл в текстовом виде. Как при чтении определить где заканчивается число и начинается следующее? Между числами наверное должен быть разделитель?

→ Ссылка