2012-05-18 52 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