2011-07-31 73 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; 
}