字母转化的程序异常
#include <stdio.h>int main()
{
char s=0;
int c=0;
printf("输入1退出程序\n");
while(c!=49)
{
printf("请输入一个字母:");
scanf("%c",&s);
c=(int)s;
if(c>=122||c<=65)
{
printf("错误输入\n");
}
else
{
if(c>='a'&&c<='z')
{
c=c-32;
printf("经过转化为:%c\n",c);
}
else
{
c=c+32;
printf("经过转化为:%c\n",c);
}
}
}
return 0;
}
每次转化完成都出现莫名的后缀
如图
经过调试发现会莫名奇妙的 scanf一个 \n
不知道从那里读进来的,求大神解答。
在while循环里的最后加上getchar();
因为你输入,你的所有输入包括回车都会在输入流,你要的是%c输入,就读取一个字符,但是回车也是一个字符,没有读取存在了输入流中,下次再调用scanf就会先读取回车,引发错误。用getchar去读你输入的回车,下次输入就直接从输入流读取你输入的字母或者别的了。 去掉没用的,加上必要的,代码修改如下:
#include <stdio.h>
int main()
{
int c=0;
printf("输入1退出程序\n");
while(c!=49)
{
printf("请输入一个字母:");
scanf("%c",&c);
while(getchar()!='\n') //#清空键盘缓冲区数据
continue;
if(c>=122||c<=65)
{
printf("错误输入\n");
}
else
{
if(c>='a'&&c<='z')
{
c=c-32;
printf("经过转化为:%c\n",c);
}
else
{
c=c+32;
printf("经过转化为:%c\n",c);
}
}
}
return 0;
} ba21 发表于 2017-9-24 20:02
去掉没用的,加上必要的,代码修改如下:
谢谢大神{:5_109:} 丶忘却的年少o 发表于 2017-9-24 19:58
在while循环里的最后加上getchar();
因为你输入,你的所有输入包括回车都会在输入流,你要的是%c输入,就 ...
谢谢大神解答{:5_109:}
页:
[1]