当我执行下面的程序时,明确要求输入与' 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);
}
}
答案 0 :(得分:2)
两件事。其中一个do-while循环比一个展开的while循环更适合你的目的(相同的效果,但看起来更干净)。其次,你的问题是有条件的,(?!\S)
总是会返回true(如果它&#39; n&#39;,它不是&#39; c&#39;,和反之亦然);因此,你的循环是无限的。你的意思是c != 'c' || c != 'n'