首页 > 解决方案 > printf 不打印变量

问题描述

我正在做 CS50 的凯撒问题,这需要我将字符串的字母向前移动一个(A -> B)。它的工作原理很简单letter++,但是当我尝试将字母移动特定数量时,没有任何效果。有什么帮助吗?

string p = get_string("plaintext: ");
int k = strtol(argv[1], NULL, 10);
printf("ciphertext: ");
for (int i = 0; i < strlen(p); i++)
{
    printf("%c", (p[i] + k) % 26);
}

提前致谢。

标签: ccs50

解决方案


它在 ASCII 表的前 26 个字符中打印一些不可见的字符。你需要在'A' + (alphabet_index(i)+k)%26哪里打印alphabet_index(i) = i - 'A'


推荐阅读