печать номера строки для каждой строки, введенной в стандартный ввод - PullRequest
1 голос
/ 31 июля 2011

я хочу напечатать номер для каждой введенной строки. Например, когда пользователь вводит «Ягуар», программа выдаст:

1 ягуар

и если пользователь вводит "лев", вывод должен быть:

2 льва.

Другими словами, экран будет выглядеть так:

ягуар 1 ягуар лев 2 льва леопард 3 леопарда ...

Звучит легко, да. Вот мой код, который печатает вещи неправильно, и я не понимаю, как и почему ....

int main (int argc, const char * argv[])
{
  int lineNum = 0;
  char c;
  while(  (c= fgetc(stdin) )  != EOF)          
  {
    if(c == '\n')
    {
      lineNum++;
      printf("\n %i", lineNum);
    }
    else
    {
      fputc(c, stdout);
    }
  }
  //return 0;
}

Ответы [ 2 ]

3 голосов
/ 31 июля 2011

Это у вас работает?

char buffer[256];
int i = 1;

while (fgets(buffer, sizeof(buffer), stdin)) {
    printf("%d %s", i, buffer);
    i++;
}
0 голосов
/ 31 июля 2011

Вот более короткое решение.

#include <unistd.h>
int main(int argc, char *argv[])
{
    execlp("nl", "nl", NULL);
    return 1;
}
...