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

发布于 2024-11-27 04:37:06 字数 525 浏览 1 评论 0原文

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

1 jaguar

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

2 lion。

换句话说,屏幕将如下所示:

jaguar 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;
}

what i want to do is print a number for each line entered. eg when a user enters "jaguar", the program will output:

1 jaguar

and if the user then enters "lion" the output should be:

2 lion.

In other words the screen will be looking like this:

jaguar
1 jaguar
lion
2 lion
leopard
3 leopard...

Sounds easy yes. Here is my code which is printing things wrongly and i dont understand how and why....

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;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

念三年u 2024-12-04 04:37:06

这对你有用吗?

char buffer[256];
int i = 1;

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

Does this work for you ?

char buffer[256];
int i = 1;

while (fgets(buffer, sizeof(buffer), stdin)) {
    printf("%d %s", i, buffer);
    i++;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文