因此,我正在尝试编写一个类似于cypher的代码。它将单词作为输入,输出(打印)编码后的单词。我的代码中有问题的片段是for循环。
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main(void)
{
char input[] = "hello";
printf("hello\n");
printf("ciphertext: ");
for (int i = 0; i < 5; i++)
{
if(isalpha(input[i]))
{
int current = input[i];
int cypher = ((current + 1) % 26 )+current;
char out = (char)cypher;
printf("%c", out);
}
else
{
printf("%c", input[i]);
}
}
printf("\n");
}
我在调试时遇到的问题是,最终存储在“out”中的值看起来是正确的,但是当打印它时,它显示的完全是其他的东西。我确实在这里查找了很多东西,比如这样写代码:
第一次
输出应该是ifmmp,但我得到了j~rrx
任何事情都会有帮助的!谢谢:)
1条答案
按热度按时间ui7jx7zq1#
你得到了正确的答案。105是ASCII值“i”。没有区别。更准确地说,
char
类型被定义为一个整数。在几乎所有的编译器上,它的大小都是8位。因此,unsigned char
的值可以在0到255之间;有符号char
可以具有-128到+127之间的值。因此,当
out
变量的值为105时,它的值为'i'。printf
的输出将是:但是,如果查看调试器中的
out
变量,则可能会看到105
,具体取决于调试器。