解释为什么while循环没有检查条件

  • 本文关键字:条件 循环 while 解释 c
  • 更新时间 :
  • 英文 :

void main () {
char f;
do {
scanf("%c",&f);// input a  character
printf("%c",f);//output a  character
}while(f=='y');
}

任何值都将结束程序,即使yput是结束程序,任何人都能解释我在这个程序上陷入困境的原因吗。。

除了void main()(main的返回值应该是int(和检查scanf返回的值失败(如果scanf返回0并且没有为f赋值,那么尝试从未初始化的f读取值是未定义的行为(之外,您的程序运行良好:

$ echo yyyyyabcd | ./a.out; echo
yyyyya

但是,如果以交互方式输入数据,则可能会输入输入流ynyn(在每个y之后点击enter/return(,并且程序在看到第一个换行符时终止。

这是因为当scanf再次执行时,它正在读取您键入的上一个输入流中留下的空白字符。

最简单的解决方案是在%c转换说明符之前包含一个空白字符。示例:

scanf(" %c",&f);// input a  character

这个命令告诉scanf跳过前导空白。

最新更新