Всегда ли fgets() завершает буфер char с \0, даже если EOF уже достигнут? Похоже, что это так (это, безусловно, имеет место в реализации, представленной в книге ANSI K & R), но я думал, что попрошу вас убедиться.
Я предполагаю, что этот вопрос применим к другим подобным функциям, таким как gets().
EDIT: Я знаю, что \0 добавляется во время "нормальных" обстоятельств, мой вопрос нацелен на EOF или условия ошибки. Например:
FILE *fp;
char b[128];
/* ... */
if (feof(fp)) {
/* is \0 appended after EACH of these calls? */
fgets(b, 128, fp);
fgets(b, 128, fp);
fgets(b, 128, fp);
}