char变量问题

时间:2017-05-08 21:02:32

标签: c while-loop char

当我执行下面的程序时,明确要求输入与' c'不同的字符。或者' n',就像while循环条件中的字符c与scanf中的字符不同。

无论你键入什么字符,循环都会继续,我想知道原因。

#include <stdio.h>

int main(){
    char c;
    printf ("type any character except 'c' or 'n': ");
    scanf ("%c%*c", &c);
    while (c != 's' || c != 'n'){
        printf ("\ntype any character except 'c' or 'n': ");
        scanf ("%c%*c", &c);    
    }
}   

1 个答案:

答案 0 :(得分:2)

两件事。其中一个do-while循环比一个展开的while循环更适合你的目的(相同的效果,但看起来更干净)。其次,你的问题是有条件的,(?!\S)总是会返回true(如果它&#39; n&#39;,它不是&#39; c&#39;,和反之亦然);因此,你的循环是无限的。你的意思是c != 'c' || c != 'n'