我是个乞丐,所以我被困在这一部分。我需要输入一个消息,以及一个移位金额,通过该移位金额,字母应该转移到“加密”消息。 问题是它没有显示任何文本,它只是永远不会退出while循环。
非常感谢任何帮助。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char ch,message[50]={0};
int shift;
printf("Enter message to be encrypted: ");
scanf("%s",message);
printf("Enter shift amount (1-25): ");
scanf("%d",&shift);
printf("Encrypted message: ");
while((sscanf(message," %c",&ch) == 1) && (ch != '\n'));
{
ch += shift;
putchar(ch);
}
return 0;
}
输出:
Enter message to be encrypted: abcABC
Enter shift amount (1-25): 3
Encrypted message:
(程序在一个infite循环中停留在那里)
答案 0 :(得分:1)
你错误地使用sscanf
。它将始终只读取第一个字符。
尝试这样做以达到你想要的效果。
int i=0;
while(i<strlen(message))
{
ch=message[i++];
ch += shift;
putchar(ch);
}
答案 1 :(得分:1)
您的代码有很多内容
a)你有“;”在while
的末尾
b)你总是只阅读sscanf
内的第一个字符
这就是为什么你处于无限循环中。
我建议用for
循环替换,如下所示。
scanf
自动将'\ 0'附加到字符串的末尾。
int i;
for(i=0 ; i<50 && mesage[i] != '\0'; i++)
{
ch = message[i];
ch += shift;
putchar(ch);
}