Правильно ли я считываю числа из файла в массив?
Не могу понять, правильно ли я считываю числа из файла в массив. Если нет, прошу указать на ошибку, если да, то значит, ошибка где-то в другом месте моей программы.
Для понимания контекста: я заполняю сначала файл случайными числами, а потом эти числа оттуда считываю.
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 шт):
Не совсем понятен вопрос - что значит правильно ли считываю числа? Если вы их читаете из файла, все что записали - значит правильно.
Пройдите дебаггером. Или по совету @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;
}
Посмотрите что внутри файла.
Ну или просто по логике - вы пишете в файл в текстовом виде. Как при чтении определить где заканчивается число и начинается следующее? Между числами наверное должен быть разделитель?