请教一段C语言代码,极为简单的代码

Gii16_一个预备程序 2014-08-04 02:01:09
该代码用于密文转换,例如,输入China会输出Glmre,代码没有问题。我的疑问是,在执行该程序时,输入China(回车),为何是在敲击回车之后才会输出Glmre这一字符串,而不是出入一个C就输出一个G,输入一个h,输出一个l?按照程序代码来看,每次循环中都会输出一个字母,但是为何我们看到的是直接输出的一个完整字符串?
#include<stdio.h>
void 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");
}
...全文
216 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
richer1015 2014-08-07
  • 打赏
  • 举报
回复
引用 2 楼 hadghamg2 的回复:
while((c=getchar())!='\n') getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符 getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回 程序修改:

#include "stdafx.h"
#include<conio.h>

void main(int argc, char* argv[])
{
	printf("Hello World!\n");
	char c;
while((c=getch())!=13)
{
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");
}
2楼正解,如果楼主还是有疑问,用debug模式调试下的代码,把断点打到while里面,就知道执行情况了
dataxdata 2014-08-05
  • 打赏
  • 举报
回复
命令行界面没有图形界面GUI那么灵活,必须要使用缓冲区
GOSP 2014-08-05
  • 打赏
  • 举报
回复
while((c=getchar())!='\n') getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符 getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回 程序修改:

#include "stdafx.h"
#include<conio.h>

void main(int argc, char* argv[])
{
	printf("Hello World!\n");
	char c;
while((c=getch())!=13)
{
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");
}
lx624909677 2014-08-04
  • 打赏
  • 举报
回复
Returns the character read. To indicate a read error or end-of-file condition, getchar returns EOF, and getwchar returns WEOF. For getchar, use ferror or feof to check for an error or for end of file.

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧