打印在标准输入中输入的每一行的行号

时间:2011-07-31 07:13:07

标签: c numbers line stdout stdin

我想要做的是为输入的每一行打印一个数字。例如,当用户输入“美洲虎”时,程序将输出:

1美洲虎

如果用户输入“lion”,则输出应为:

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 个答案:

答案 0 :(得分:3)

这对你有用吗?

char buffer[256];
int i = 1;

while (fgets(buffer, sizeof(buffer), stdin)) {
    printf("%d %s", i, buffer);
    i++;
}

答案 1 :(得分:-1)

这是一个较短的解决方案。

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