Возвращаемое значение 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");
}

Ответы на вопрос(1)

Ваш ответ на вопрос