2013-04-16 53 views
0
切換

我想前面加上數字來了「的putchar」部分,但因爲getchar函數是在同一時間抓住一個字符,輸出爲「喜」變成1 h 2 i的getchar,在C

int linecount = 1; 
int numberflag = 1; 


while (1){ 
    int input = getchar(); // use int to make sure var input is big enough to hold EOF plus any other char 


    switch (input) { 
    case EOF: 
     exit(-1); 

    default: 
     if (numberflag){ 
     printf("\t%d\t", linecount); 
     linecount++; 
     } 
     putchar(input); 
     break; 
    } 
} 

所有幫助將不勝感激。我試圖使輸出:

1 hi 
2 hello 

,而不是

hi 1 
hello 2 
+0

您需要設置'n umberflag'取決於你得到的'char'。 –

+0

什麼是數字標記,它來自哪裏? – Lundin

+0

case'\ n':linecount ++ – BLUEPIXY

回答

3

這似乎工作:

#include <stdio.h> 

int main(void) 
{ 
    int linecount = 1; 
    int numberflag = 1; 
    int sol = 1; 
    int c; 

    while ((c = getchar()) != EOF) 
    { 
     if (numberflag && sol) 
     { 
      printf("\t%d\t", linecount++); 
      sol = 0; 
     } 
     if (c == '\n') 
      sol = 1; 
     putchar(c); 
    } 
    return 0; 
} 

輸出時,對自己的源代碼(./sol < sol.c)運行

 1  #include <stdio.h> 
     2 
     3  int main(void) 
     4  { 
     5   int linecount = 1; 
     6   int numberflag = 1; 
     7   int sol = 1; 
     8   int c; 
     9 
     10   while ((c = getchar()) != EOF) 
     11   { 
     12    if (numberflag && sol) 
     13    { 
     14     printf("\t%d\t", linecount++); 
     15     sol = 0; 
     16    } 
     17    if (c == '\n') 
     18     sol = 1; 
     19    putchar(c); 
     20   } 
     21   return 0; 
     22  }