因此,我正在尝试编写一个可以用作密码的代码。它将以密码为输入和输出(打印)编码后的单词。我的代码中有问题的代码段是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”中的值看起来是正确的,但是当涉及到打印时,它完全显示了其他内容。我确实在这里找到了很多东西,例如编写如下代码:
char out = (char)cypher;
char out= cypher + '0';
,依此类推,但无济于事。输出应该是ifmmp,但我会得到j〜rrx
任何事情都会有所帮助!谢谢:)
答案 0 :(得分:0)
您得到正确的答案。 105是ASCII值“ i”。没有区别。更准确地说,char
类型定义为整数。在几乎所有编译器上,它的大小都是8位。因此unsigned char
的值可以在0到255之间;签名的char
的值可以在-128到+127之间。
因此,当您的out
变量的值为105时,它的值为'i'。
您的printf
的输出将为:
i
但是,如果您在调试器中查看out
变量,则可能会看到105
,具体取决于调试器。