c - 字符串打印问题

标签 c arrays string for-loop printing

我试图创建一个程序来使用凯撒密码加密字符串,如果您不熟悉凯撒密码,它是一种非常简单的加密方法,它使用输入字符串和可以选择的数字“n”进行操作由用户输入,然后将整个字母表移动 n 次。例如,如果 n=1,则所有 A 都变为 B,依此类推。该程序应该有一个输入字符串,该程序应通过键盘输入读取该输入字符串,以及一个必须由用户选择的 n 数字;并且应该返回一个字符串,其中第一个字符代表未加密字符串的第一个字符,然后后面的字符应该是输入字符串的加密版本,使用用户选择的 n 数字使用凯撒密码进行加密。为了简洁起见,我没有在这篇文章中包含程序扫描 n 值并调整它的代码部分(它显然必须小于 26),并且我也取消了程序中执行以下操作的部分:将输入字符串转为大写。

int main() {
  int i, n;
  char uncod[200] = {0};
  char cod[200] = {0};
  printf("insert the string to encript:");
  scanf("%[0-9a-zA-ZSPACE]", uncod);
    cod[0] = (char)uncod[0];
    for(i == 1; i < 200; i++) {
      sprintf(cod, "%d + n", uncod[i]);
      if (cod[i] > 90) {
    cod[i] = 64 + n;
      }
      if (cod[i] < 65) {
    cod[i] = 91 + n;
    }
    };
     printf("%s\n", cod);
}

该程序应该采用未加密字符串的 ASCII 代码,并添加或减去 n 来通过简单的赋值找到正确的字符,它只是遍历数组,并在分配给第一个字符后将其加密的对应部分分配给每个字符输出字符串的值 输入字符串的未加密第一个字符。问题是,当我打印输出字符串时,它只会打印第一个字符并忽略其余字符。怎么解决这个问题?

最佳答案

  • n 未在任何地方初始化。
  • 不确定这一行应该做什么“sprintf(cod, "%d + n", uncod[i])”。为什么要将这样的字符串连接到加密输出?
  • 您可能希望在字符串终止 (\0) 时停止循环。

关于c - 字符串打印问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40828353/

相关文章:

javascript - p5.j​​s 中对象的 2D 网格

java - 如何在java中仅将一个值分配给数组的第零个索引,并且所有值都在该数组中

html - 使用 Swift 解析网站源 HTML 文件

java - 最大数量的连续元音

c++ - 如何获取程序的堆大小

c - 缓冲区溢出 - 无法覆盖返回地址

sql - 从 SQL 中的数组中删除空值

algorithm - 字符串到数字和返回算法

c - Linux内核分配实现中的指针计算

c - 安装Notepad++ C编译器插件 : linintl-8. dll丢失