2012-05-18 65 views
2

我正在查看一個早期的實驗,其中您的輸入是一個字符,輸出會顯示'二進制代碼',但出錯了,我似乎無法得到問題開始了。switch語句中的字符類型

這是代碼:

char myNothing = 0; 

     scanf("%c", myNothing); 
     switch (myNothing) 
     { 
      case 'a': 
       NSLog(@"01100001"); 
       break; 
      case 'b': 
       NSLog(@"01100010"); 
       break; 
      case 'c': 
       NSLog(@"01100011"); 
       break; 
      case 'd': 
       NSLog(@"01100100"); 
       break; 
      default: 
       NSLog(@"Unknow character"); 
       break; 
     } 

     return 0; 

而這是輸出時的任何字符被插入到輸入:

Run Command: line 1: 607 Segmentation fault: 11 ./"$2" "${@:3}" 

回答

8

變化:

scanf("%c", myNothing); 

到:

scanf("%c", &myNothing); 

或者更好的是:

myNothing = getchar(); 

此外,還要確保您已啓用編譯器警告。

+0

哇,這是一個愚蠢的錯誤,感謝無論如何注意它。 – Marnix