user-0 提问: 有关C代码的一些问题，求大神指教~

回复:
user: user-1
content: 你把getchar换成scanf输入就没事了，getchar把你的回车换行也输入进去了

user: user-2
content: #include <stdio.h> #include <conio.h>  void main() {     char first,second;     printf("请任意输入某天英文单词的的第一个字母:\n");     first = getchar();     getchar();    /* 接收回车符 */     switch (first)     {         case 'S': printf("请输入第二个字母：\n");                   second = getchar();                   if (second == 'u')                       printf("这是星期日\n");                   else if (second == 'a')                       printf("这是星期六\n");                   else printf("data erro\n");                   break;         case 'M':  printf("这是星期一\n");                    break;         case 'T':  printf("请输入第二个字母：\n");                    second = getchar();                    if (second == 'u')                        printf("这是星期二\n");                    else  if (second == 'h')                        printf("这是星期四\n");                    else printf("data erro\n");                    break;         case 'W':  printf("这是星期三\n");                    break;         case 'F':  printf("这是星期五\n");                    break;         default: printf("data erro\n");     }     getch();  } 跟getchar有关，详见代码；

user: user-2
content: 引用 7 楼 qq_16071447 的回复:[quote=引用 4 楼 cfjtaishan 的回复:]  #include <stdio.h> #include <conio.h>  void main() {     char first,second;     printf("请任意输入某天英文单词的的第一个字母:\n");     first = getchar();     getchar();    /* 接收回车符 */     switch (first)     {         case 'S': printf("请输入第二个字母：\n");                   second = getchar();                   if (second == 'u')                       printf("这是星期日\n");                   else if (second == 'a')                       printf("这是星期六\n");                   else printf("data erro\n");                   break;         case 'M':  printf("这是星期一\n");                    break;         case 'T':  printf("请输入第二个字母：\n");                    second = getchar();                    if (second == 'u')                        printf("这是星期二\n");                    else  if (second == 'h')                        printf("这是星期四\n");                    else printf("data erro\n");                    break;         case 'W':  printf("这是星期三\n");                    break;         case 'F':  printf("这是星期五\n");                    break;         default: printf("data erro\n");     }     getch();  } 跟getchar有关，详见代码；  [quote=引用 2 楼 qq_16071447 的回复:] 你把getchar换成scanf输入就没事了，getchar把你的回车换行也输入进去了 scanf一样是有这个问题的，建议写几行代码试试[/quote] scanf("%c\n",..)这样应该没问题[/quote] 希望自己验证一下再发表意见，"%c\n"，你试试能不能正常工作？

user: user-3

user: user-1
content: 引用 4 楼 cfjtaishan 的回复: #include <stdio.h> #include <conio.h>  void main() {     char first,second;     printf("请任意输入某天英文单词的的第一个字母:\n");     first = getchar();     getchar();    /* 接收回车符 */     switch (first)     {         case 'S': printf("请输入第二个字母：\n");                   second = getchar();                   if (second == 'u')                       printf("这是星期日\n");                   else if (second == 'a')                       printf("这是星期六\n");                   else printf("data erro\n");                   break;         case 'M':  printf("这是星期一\n");                    break;         case 'T':  printf("请输入第二个字母：\n");                    second = getchar();                    if (second == 'u')                        printf("这是星期二\n");                    else  if (second == 'h')                        printf("这是星期四\n");                    else printf("data erro\n");                    break;         case 'W':  printf("这是星期三\n");                    break;         case 'F':  printf("这是星期五\n");                    break;         default: printf("data erro\n");     }     getch();  } 跟getchar有关，详见代码；  [quote=引用 2 楼 qq_16071447 的回复:] 你把getchar换成scanf输入就没事了，getchar把你的回车换行也输入进去了 scanf一样是有这个问题的，建议写几行代码试试[/quote] scanf("%c\n",..)这样应该没问题

user: user-3
content: 第二个getchar调用不会等待用户按键，而直接读取缓冲区中的换行字符，直到缓冲区中的字符读完为后，才等待用户按键，所以最简单的解决的办法就是在第二个getchar之前多加一个getchar();

user: user-4
content: 在每个最后不带\n的printf后面加fflush(stdout); 在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin); 另外请检查scanf的返回值。 //请今后要用 char c; scanf("%c",&c); //时，都改为 char s[2]; char c; scanf("%1s",s); c=s[0]; //自动跳过一个或多个空格或Tab字符或回车换行，读取下一个字符。

user: user-2
content: #include <stdio.h> #include <conio.h>  void main() {     char first,second;     printf("请任意输入某天英文单词的的第一个字母:\n");     first = getchar();     getchar();    /* 接收回车符 */     switch (first)     {         case 'S': printf("请输入第二个字母：\n");                   second = getchar();                   if (second == 'u')                       printf("这是星期日\n");                   else if (second == 'a')                       printf("这是星期六\n");                   else printf("data erro\n");                   break;         case 'M':  printf("这是星期一\n");                    break;         case 'T':  printf("请输入第二个字母：\n");                    second = getchar();                    if (second == 'u')                        printf("这是星期二\n");                    else  if (second == 'h')                        printf("这是星期四\n");                    else printf("data erro\n");                    break;         case 'W':  printf("这是星期三\n");                    break;         case 'F':  printf("这是星期五\n");                    break;         default: printf("data erro\n");     }     getch();  } 跟getchar有关，详见代码；  引用 2 楼 qq_16071447 的回复:你把getchar换成scanf输入就没事了，getchar把你的回车换行也输入进去了 scanf一样是有这个问题的，建议写几行代码试试

user: user-5
content: 楼上正解....