Я полагаю, что вы хотите напечатать символ новой строки \n
, прежде чем печатать номер строки. Вы можете исправить это, просто переместив строку печати над оператором if.
int main(void) {
int c, nl;
nl = 1;
FILE *file;
file = fopen("testWords.in", "r");
if (file) {
printf("%d. ", nl);
while((c = getc(file)) != EOF) {
printf("%c", c);
if (c == '\n') {
++nl;
printf("%d", nl);
}
}
fclose(file);
}
return 0;
}
Не меняя то, что у вас слишком много, вы можете предотвратить печать дополнительного номера строки, зарегистрировав предыдущий символ. Подождите, чтобы напечатать номер строки, пока последний символ не был \n
, и вы оказались на новой строке. Таким образом, EOF
сработает до того, как будет напечатан посторонний номер строки.
#include <stdio.h>
int main(void) {
int c, nl, p;
nl = 1;
FILE *file;
file = fopen("testWords.in", "r");
if (file) {
printf("%d. ", nl);
while((c = getc(file)) != EOF) {
if (p == '\n') {
++nl;
printf("%d", nl);
}
p = c;
printf("%c", c);
}
fclose(file);
}
return 0;
}