C语言编程getchar()的问题while((ch=getchar()) !='\n')程序输出结果字...
发布网友
发布时间:2024-03-03 08:31
我来回答
共3个回答
热心网友
时间:2024-08-14 15:16
当你输入abcdef后,输入缓冲区有7个字符,“abcdef\n",多了一个回车。
while循环第一次:
getchar读取到第一个字符‘a',赋值给ch,非空格,进入else,输出’a'+1,即‘b',然后又getchar读取到第二个字符’b',本次循环结束,准备进入第二次循环;
while循环第二次:
getchar读取到第三个字符‘c',赋值给ch,非空格,进入else,输出’c'+1,即‘d’,然后又getchar读取第四个字符‘d’,本次循环结束,准备进入第三次循环;
while循环第三次:
getchar读取到第五个字符‘e',赋值给ch,非空格,进入else,输出’e'+1,即‘f',然后又getchar读取第六个字符’f‘,本次循环结束,准备进入第四次循环;
whle循环第四次:
getchar读取到第七个字符’\n',赋值ch,循环条件不成立,循环终止;
运行putchar输出ch,此时ch为‘\n';即输出换行。
所以全部输出为:bdf然后还有一个换行符。
函数返回。
热心网友
时间:2024-08-14 15:08
关键在于while(ch !='\n')和while((ch=getchar())!='\n')的不同啊,因为getchar()相当于接收字符嘛,而你第二个程序除了while()里有一个getchar(),{}语句里面也有个getchar(),它也是可以接受一个字符的,所以他把你的输入的b,d接收了,但是你ch接收到的是while()里面输入的即a,c,e,所以经过了下面处理只输出了bdf
热心网友
时间:2024-08-14 15:15
#include <stdio.h>
#include <ctype.h>
#define SPACE ' '
int main(void)
{
char ch;
while((ch=getchar())!='\n') //这里一次getchar
{ if(ch==SPACE)
putchar(ch);
else
putchar(ch+1);
//ch=getchar(); //这里一次getchar,这一次的就没有了,这句话注释掉就可以了
}
putchar(ch);
return 0;
}