В основном мне нужно отсканировать все значения из этого файла ... которые он в значительной степени делает, но, похоже, пропускает случайные, поэтому он не выравнивается правильно. (Это только часть того, что мне нужно сделать для задания, поэтому вы не «раздаете ответ», и я все еще хочу разобраться в этом самостоятельно, просто нужно немного помочь понять это, потому что я довольно застрял)Почему мой fscanf продолжает пропускать случайные числа?
Вот код:
int main()
{
FILE *fp;
char x[15];
float ID [1000];
int i=0, j=0;
float homework [1000];
float lab [1000];
float midterm [1000];
float Final [1000];
int count=0;
char headers[35];
char y;
fp= fopen("lab5_inputFile.txt", "r");
while (fscanf(fp, "%s", x)!=EOF){
if (count > 728){
fscanf(fp, "%f", &ID[i]);
printf("ID : %.1f\n", ID[i]);
fscanf(fp, "%f", &homework[i]);
printf("Homework: %.1f\n", homework[i]);
fscanf(fp, "%f", &lab[i]);
printf("lab: %.1f\n", lab[i]);
fscanf(fp, "%f", &midterm[i]);
printf("Midterm: %.1f\n", midterm[i]);
fscanf(fp, "%f", &Final[i]);
printf("Final: %.1f\n", Final[i]);
i++;
}
count ++;
}
printf("count = %d\n", count);
fclose(fp);
я только просмотрел последние несколько значений, чтобы сделать его более удобным для чтения/отладки в реальном коде будет пропускать только также есть много других вещей, которые я планирую изменить перед отправкой, например, я мог бы использовать тип указателя и malloc вместо массивов и кучу другие вещи, но мой главный вопрос заключается в том, как исправить проблему, которую я испытываю при чтении из файла в массивы.
Заранее благодарен!
@Mohit Jain "fscanf возвращает число прочитанных символов" неверна. 'fscanf()' возвращает количество преобразованных полей или 'EOF'. – chux
Примите во внимание чтение документации по каждой функции, которую вы используете (например, [fscanf (3)] (http://man7.org/linux/man-pages/man3/scanf.3.html) ...). Скомпилируйте все предупреждения и информацию об отладке ('gcc -Wall -Wextra -g'). ** Используйте отладчик ** ('gdb'). Вы могли бы найти свою проблему, не спрашивая! –
Почему код игнорирует результаты первых 728 вызовов fscanf()? – user3629249