Как указывает Taegyung , простой метод:
int c;
int LineNumber = 1;
printf("%d ", LineNumber);
while ((c = getchar()) != EOF)
{
putchar(c);
if (c == '\n')
++LineNumber;
}
Одна из проблем заключается в том, что будет напечатан номер строки для последней «пустой» строки.Если мы хотим избежать этого, то мы хотим печатать номер строки только в том случае, если (а) мы только что начали новую строку и (б) в файле есть другой символ:
#include <stdbool.h>
…
int c;
int LineNumber = 0;
bool AtStartOfLine = true;
while ((c = getchar()) != EOF)
{
if (AtStartOfLine)
printf("%d ", ++LineNumber);
putchar(c);
AtStartOfLine = c == '\n';
}