Проблема с использованием printf при копировании чисел из файла в массив - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть проблема с моим кодом.Я копировал некоторые числа из файла, который я открыл, в массив, используя цикл for.И в то же время я поместил оператор printf после оператора fscanf, чтобы увидеть, действительно ли значение, которое я хотел, вошло в arr.Это прекрасно работает, за исключением того, что после завершения он добавляет дополнительный номер в конец массива.Я не понимаю, почему это происходит.Сначала я подумал, что неправильно использовал количество элементов в файле или что я запутался при использовании malloc, но это совершенно нормально.Может кто-нибудь, пожалуйста, скажите, что не так.Я не могу поделиться кодом до определенной даты, потому что я студент, и это будет считаться обманом.

РЕДАКТИРОВАТЬ: Ниже приведена ссылка на сегмент того, что происходит в коде.ЯЗЫК ЯВЛЯЕТСЯ C. Код предназначен для чтения цифр 1 7 5 6 8 3 9 4 2 10 из файла «Сделано», но вместо этого он всегда читает 1 7 5 6 8 3 9 4 2 10 1

РЕДАКТИРОВАТЬ: в объявлении функции я имел в виду char * имя_файла, а не int char * имя файла.

изображение, но я пока не могу вставить, поэтому ссылка

1 Ответ

0 голосов
/ 11 сентября 2018

В вашем коде несколько проблем:

  • в прототипе функции есть синтаксическая ошибка: int char* filename должно быть просто const char *filename.
  • , которую вы не тестируетевозвращаемое значение fopen().У вас будет неопределенное поведение, если программа не сможет открыть файл.
  • вы не проверяете, успешно ли fscanf() преобразовывает содержимое файла в целое число.Вы должны проверить, что он возвращает 1 и обработать ошибку, если это не так.

Вполне вероятно, что число значений, переданных функции, превышает число значений, фактически присутствующих в файле.,В этом случае содержимое массива назначения не изменяется после последнего прочитанного значения, и printf выводит все, что там присутствует.

Вы должны опубликовать всю программу в виде текста в вашем вопросе для болееполный анализ и возможные исправления.

...