C语言译密码问题

为什么输入完所有字符后才输出,而不是每输入一个字符就输出对应的一个字符?代码如下:#include<stdio.h>intmain(){charc;while((c=ge... 为什么输入完所有字符后才输出,而不是每输入一个字符就输出对应的一个字符?
代码如下:
#include<stdio.h>
int main()
{ char c;
while((c=getchar())!='\n')
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
{ c=c+4;
if((c>'Z'&&c<='Z'+4)||c>'z')
c=c-26;
}
printf("%c",c);
}
printf("\n");
}
展开
 我来答
hack小二1
2012-05-24 · 超过17用户采纳过TA的回答
知道答主
回答量:88
采纳率:0%
帮助的人:40.7万
展开全部
跟程序无关
是getchar 这个函数的问题

首先有个 缓冲区的概念 也叫stdin
你的输入都保存在这个缓冲区中
getchar 会去缓冲区 准备读取你输入的下一个字符 直到遇到 \n 返回你入的第一个字符
下次再有gatchar 它仍从这个缓冲区 读取数据 直到缓冲区 为空
你做这两个实验 就明白了
int main()
{
char c;
c=getchar();
printf("%c",c);
}
int mian()
{
char c;
while(c=getchar()!='\n');
{
printf("%c",c);
}
}
追问
第二个怎么会变成这样?。。。上不了图。。。
输出貌似都是空格
金科小轩
2012-05-24 · 超过10用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:31万
展开全部
如果在tc上运行的话,是输完在输出,在其他编译器如devc++、vc++上的话,一般都是输一个输出一个。其实也没必要在意这个,结果对就好
更多追问追答
追问
VC++也是输完再输出。。。纠结
追答
是吗?貌似只有tc吧!我在devc++上试了下,是输一个输出一个。。。其实你也不必纠结于这个问题,结果对就好啦。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
翊念秋
2012-05-24 · 超过32用户采纳过TA的回答
知道答主
回答量:130
采纳率:0%
帮助的人:104万
展开全部
你用的是字符串输入,而不是单个输入
更多追问追答
追问
???没定义字符串啊
追答
getchar()这个函数是串输入,而scanf()是单个输入
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-05-24
展开全部
getchar 这个函数的问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式