Возвращаемое значение fgets ()
Я только недавно начал работать сI/O
вC
, Вот мой вопрос -
У меня есть файл, из которого я читаю свои данные. Тогда я используюfgets()
чтобы получить строки в буфере, который я использую в некотором роде. Теперь, что произойдет, если вход будет слишком коротким для буфера, т.е.fgets()
достигаетEOF
, Долженfgets()
вернутьNULL
(как я прочитал вfgets()
документация)? Кажется, что это не так, и я получаю свой вклад правильно. Кроме того, даже мойfeof(input)
не говорит, что мы достиглиEOF
.
Вот мой фрагмент кода.
char buf[BUFSIZ];
FILE *input,
*output;
input = fopen(argv[--argc], "r");
output = fopen(argv[--argc], "w");
/**
* If either of the input or output were unable to be opened
* we exit
*/
if (input == NULL) {
fprintf(stdout, "Failed to open file - %s.\n", argv[argc + 1]);
exit(EXIT_FAILURE);
}
if (output == NULL) {
fprintf(stdout, "Failed to open file - %s.\n", argv[argc + 0]);
exit(EXIT_FAILURE);
}
if (fgets(buf, sizeof(buf), input) != NULL) {
....
}
/**
* After the fgets() condition exits it is because, either -
* 1) The EOF was reached.
* 2) There is a read error.
*/
if (feof(input)) {
fprintf(stdout, "Reached EOF.\n");
}
else if (ferror(input)) {
fprintf(stdout, "Error while reading the file.\n");
}