2011-07-31 76 views
1

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

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

回答

3

这是否适合你?

char buffer[256]; 
int i = 1; 

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

哈哈哈你是天才cnicutar ,,非常感谢你。这让我困惑了2天... ... – user870565

+0

除了上面的代码假定线超过255个字符不再... – lhf

+0

@cnicutar:好吧,这只是有用的一个particalr程度。有没有办法做同样的事情,例如使用我之前尝试过的方法,而不是一种不仅仅是打印行号的方法。谢谢 – user870565

-1

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

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