C - 无限,而循环代码正在打印 2 个"hello"而不是一个 hello,其中代码从用户那里获取输入以检查字符。如果是 n 个循环中断


#include<stdio.h>

int main(){
char ch;
while(1){
ch = getchar();
if(ch =='n'){
break;
}
printf("hello"); 
}
}

Loop正在打印两个hello而不是一个。当循环总是true并且接受来自用户的char时,如果char是n,则循环中断,否则它必须打印hello并再次请求用户输入并进行处理。无法理解程序行为。

之所以会发生这种情况,是因为当您键入一个字母时,然后按enter键,即"n";。因此,使用另一个getchar((来容纳换行符。例如:-

#include<stdio.h>

int main(){
char ch;
while(1){
ch = getchar();
getchar();
if(ch =='n'){
break;
}
printf("hellon"); 
}
}

getchar()只读取一个字符。如果以交互方式输入数据并键入1个字符后接一条换行符,则getchar将读取1个字符加上换行符。1+1=2;你好";已打印两次。

也许你想要:

#include <stdio.h>
#include <ctype.h>
int
main(void)
{
int ch;   /* getchar() returns an int */
while( (ch = getchar()) != EOF && ch != 'n' ){
if( ! isspace(ch) ){
puts("hello");
}
}
return 0;
}

相关内容

最新更新