请教关于getchar()的问题,始终弄不明白

来源:百度知道 编辑:UC知道 时间:2024/06/19 15:24:24
下面程序中两次用到了getchar(),弄不明白它在程序中起到什么样得作用。到详细得解释。(难道说循环体内的是赋值,那循环体外有什么作用?是在不明白)程序得功能:反复输入小写字母,循环后移5个位置后输出。如下:
#include"stdio.h"
main()
{char c;
c=getchar();
while(c!='\n')
{if(c>='a'&&c<='u')c=c+5;
else if(c>='v'&&c<='z')c=c-21;
putchar(c);
c=getchar();
}
}
我在补充一下我的问题。两次getchar()出现的作用是什么?请帮忙详细解释一下,自己很糊涂。我自己得理解是:1.在循环外的是赋值,也就是将输入的字符,统一存放在缓冲区里,然后从缓冲区中逐一读出字符与while(c!='\n')个表达式进行判断,要是等于回车就退出循环,不知这么想对不对?2。那在循环内的getchar(),又有什么作用?我实在是不知道。3.假如putchar(c)的结果是:ab,那么再执行c=getchar()会得到什么结果?为什么要这样做?请教了,谢谢!

getchar函数是从缓冲区读取一个字符
如果读取的字符不是'\n',也就是回车,则做
if(c>='a'&&c<='u')c=c+5;
else if(c>='v'&&c<='z')c=c-21;
putchar(c);

在循环外,是因为第一次比较的时候,c变量里面什么都没,是个随机值,所以要读取一次

问题补充:我在补充一下我的问题。两次getchar()出现的作用是什么?请帮忙详细解释一下,自己很糊涂。我自己得理解是:1.在循环外的是赋值,也就是将输入的字符,统一存放在缓冲区里,然后从缓冲区中逐一读出字符与 while(c!='\n')个表达式进行判断,要是等于回车就退出循环,不知这么想对不对?2。那在循环内的getchar(),又有什么作用?我实在是不知道。3.假如putchar(c)的结果是:ab,那么再执行c=getchar()会得到什么结果?为什么要这样做?请教了,谢谢!
1.循环外只执行一次getchar()
2.循环内是反复读取c,直到c为回车
3.putchar输出的结果ab,跟getchar是没有什么关系的