我需要编写一个程序,从输入中读取一个以新行结尾的句子。该程序应该以字母“a”与“z”、“b”与“y”等交换的方式编写句子的加密。我不应该使用数组,这就是我找不到解决此问题的原因。
这是我的代码:
#include<stdio.h>
int main() {
char alphabet, temp;
while( scanf("%c", &alphabet) != '\n') {
for(char i ='a', j='z'; i <= 'z', j>='a'; i++, j--) {
if(alphabet == i) {
temp = j;
}
}
printf("%c", temp);
}
return 0;
}
当我输入:abc 作为输出时,我得到 zyxxxxxxxxxxxxxxxxxxxxxxxxx(无限数量的 x)。
总结一下: 输入:abc。输出:zyxxxxx(无限数量的x)。
最佳答案
你弄乱了 scanf
的返回值:
while( scanf("%c", &alphabet) != '\n'){
当输入的字符(在 alphabet
中)是一个换行符时,您想停止循环。
但是您测试了 scanf
的返回值,它永远不会是 '\n'
,因为它返回转换字段的数量。
你可以这样尝试:
while( scanf("%c", &alphabet) == 1 && alphabet != '\n'){
关于c - C中交换字母的加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46235638/