求大神解释:为什么去掉最后的c=getchar();程序运行不起来。

#include <stdio.h>
#include <ctype.h>
main()
{ char c;
c=getchar();
while (c!='@')
{ if (isalpha(c))
{c=tolower(c);
c=(c-'a'+1)%26+'a';
}
putchar(c); c=getchar();
}
printf("\n");
}
把一串密码译成正文,密码以字符@表示结束,规则如下:
1,如果是字母,转换成字母序列的下一个字母,如A变成B;
2,如果是字母Z变成A;
3,无论是大小写字母都译成小写字母;
4,其他字母一律照原样译出

getchar是一个阻塞式函数,就是它会一直等待按键输入。
如果去掉了最后一个 c=getchar();的话,那变量C就不会被改变,这就两种情况:一种是第一次输入非@符号,这种情况会进入死循环,二种是每一次输入@符号,这样的话就直接结束运行了。追问

去掉c=getchar();后,虽然输入的字符最后以@结束,但是程序还是死循环,这是为什么

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网