Читаю 15 чисел из текстового файла, с каждым номером в новой строке:C Программа - Проверка номера чтения из текстового файла
1 2 3 4 5 10 12 13 14 15 21 22 23 24 26
Как вы можете видеть из кода мне нужны номера для быть проверенными, чтобы они были меньше 26, в противном случае прекратить программу.
На данный момент я проверяю только после вставки его в массив (numArray). Есть ли более чистый способ сделать это (для проверки перед вставкой в массив)?
Проблема в том, что я не могу получить фактическую строку в текстовом файле, который читается. Вот почему я проверил его с помощью индекса цикла в массиве (int x = numArray [i];).
Любая помощь приветствуется, я новичок в программировании на С. Благодарю.
FILE *myFile = fopen(dataset.txt, "r");
int numArray[15];
if (myFile != NULL) {
for (int i = 0; i < sizeof(numArray); i++)
{
//insert int to array
fscanf(myFile, "%d", &numArray[i]);
//Validate number
int x = numArray[i];
if (x > 25) {
printf("Invalid number found, closing application...");
exit(0);
}
}
//close file
fclose(myFile);
}
else {
//Error opening file
printf("File cannot be opened!");
}
1. Проверьте возвращаемое значение 'fscanf' в случае, если файл имеет другие символы, а не только цифры. 2. Почему вы все равно помещаете числа в массив, является ли необходимым шагом для более позднего кода? В любом случае вы на самом деле не вставляете * ничего, вы просто устанавливаете значения в индексах массива (вставка обычно подразумевает перемещение элементов, чтобы сделать комнату посередине). – hyde
Ваша петля выйдет за пределы массива. Оператор 'sizeof' дает вам размер *** байтов ***, а не количество элементов. Для реального массива (например, ваш 'numArray') вы можете получить количество элементов, разделив размер полного массива на размер одного элемента, т. Е.' Sizeof numArray/sizeof numArray [0] '. –