2013-04-16 2 views
0

Я пытаюсь предварять номера в «putchar» часть, а потому, что GetChar захватывает характер, в то время, выход для «привет» превращается в 1 h 2 iGetChar, переключение в 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

Что такое numberflag и откуда оно взялось? – 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  }