如何构建可接收用户输入的数组以用于Caesar cipher程序存储明文
凯撒密码接收用户输入构建明文字符数组实现方案
通用实现逻辑如下:
- 首先接收用户输入的完整明文串,大多数编程语言的字符串本身就是可按索引访问的字符序列,如果你需要显式转为数组,直接做对应类型转换即可
- 可以根据凯撒密码的计算需求提前处理输入:比如过滤非字母字符、统一转大小写,避免后续移位计算出错
Python 实现示例
Python 中字符串本身是可迭代序列,用list()方法即可直接转为字符数组:
# 接收用户输入的明文 plaintext = input("请输入需要加密的明文: ") # 直接转换为字符数组 plaintext_arr = list(plaintext) # 可选处理:过滤非字母、统一转大写方便后续移位计算 filtered_arr = [c.upper() for c in plaintext_arr if c.isalpha()]
C 语言实现示例
C 语言需要先定义固定长度的字符数组,推荐用fgets接收输入避免空格截断问题:
#include <stdio.h> #include <ctype.h> #define MAX_PLAIN_LEN 1024 // 自定义明文最大支持长度 int main() { char plaintext_arr[MAX_PLAIN_LEN]; printf("请输入需要加密的明文: "); // 接收用户输入存入数组 fgets(plaintext_arr, MAX_PLAIN_LEN, stdin); // 可选处理:过滤非字母、统一转大写 int valid_pos = 0; for(int i = 0; plaintext_arr[i] != '\0'; i++) { if(isalpha(plaintext_arr[i])) { plaintext_arr[valid_pos++] = toupper(plaintext_arr[i]); } } plaintext_arr[valid_pos] = '\0'; // 补充字符串结束符 return 0; }
JavaScript 实现示例
浏览器环境:
// 接收用户输入 const plaintext = prompt("请输入需要加密的明文: ") || ''; // 转为字符数组 const plaintextArr = plaintext.split(''); // 可选处理:过滤非字母、统一转大写 const filteredArr = plaintextArr.filter(c => /[a-zA-Z]/.test(c)).map(c => c.toUpperCase());
Node.js 环境:
const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); rl.question('请输入需要加密的明文: ', (plaintext) => { const plaintextArr = plaintext.split(''); // 后续处理逻辑 rl.close(); });
小提示:如果只是做基础凯撒移位运算,大部分场景不需要显式转数组,直接遍历字符串的每个字符做移位计算即可,转数组仅用于需要对字符做增删改的特殊处理场景。
内容的提问来源于stack exchange,提问作者abdallah saeed
相关产品推荐
相关产品推荐

