2013-01-12 20 views
1

即時通訊設法打印出實際的\ t和\ b當我從輸入中得到這些行動。爲什麼putchar打印一些數值而不是字符我問它放?

int main() 

    { 

     int input, specialChar; 

     while ((input = getchar()) != EOF) 

      specialChar = 0; 

     { 

      if (input == '\t') 

      { 
       putchar('\\'); 
       putchar('t'); 
       specialChar = 1; 
      } 

是putchar('t');不要打印出「t」?

if (input == '\b') 

     { 
      putchar('\\'); 
      putchar('b'); 
      specialChar = 1; 

     } 


     if (specialChar == 0) 

      putchar(input); 

    } 

    return 0; 
} 

您能告訴我爲什麼我會得到「\ 377」而不是?

+1

你的while循環是否正確? 'specialChar = 0'應該在大括號內嗎? –

回答

2

因爲你的循環是:

while ((input = getchar()) != EOF) 
     specialChar = 0; 

然後,當你退出循環,你到:

{ 

     if (input == '\t') 

     { 
      putchar('\\'); 
      putchar('t'); 
      specialChar = 1; 
     } 

這意味着你到:

if (specialChar == 0) 
     putchar(input); 

withn輸入中的「EOF」,其中字符分別爲0xff,255或0377,分別爲十六進制,十進制和八進制。

移動你的大括號,所以它涵蓋了整個循環!

相關問題