#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;
}