c - 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);
}
提前致谢。
解决方案
它在 ASCII 表的前 26 个字符中打印一些不可见的字符。你需要在'A' + (alphabet_index(i)+k)%26
哪里打印alphabet_index(i) = i - 'A'
推荐阅读
- javascript - AngularJS 一个 div 中的多个选择
- python - 使用 osc4py3 从 Python 发送消息?
- python - 从人口普查中下载数据块,如何写入多个 csv 以不超过内存
- json - Azure 逻辑应用:动态设置工作流名称以调用现有逻辑应用(嵌套逻辑应用)
- image - Checkbox Recaptcha 改为显示图像 Recaptcha
- javascript - 将 JavaScript 函数导入 HTML?
- javascript - 基于 Extjs 名称的 UUID 生成
- 3d - 自制 3D 引擎中的奇怪旋转
- c++ - Qpaintevent和paintGL冲突
- google-app-engine - Gcloud deploy 未部署文件夹