如何把英文句子中的空格去除,然后将句子拍成若干行,每行的字符数为换位位数,再按列输出为密文,不足部分填入随机字母,如can you come here若换位数取4,则密文为comraueenchayoeb
3条回答 默认 最新
- 技术专家团-小桥流水 2022-12-14 16:33关注
这个加密好处理,一维数组转二维数组按列输出就可以了,但是添加随机字符后解密就不好解密了
运行结果:
代码:
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> #include <time.h> #define MAXLEN 10000 int main() { char str[MAXLEN] = { 0 }; int i = 0, j = 0; char tmp; int n; char** p; int len; const char* sr = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; //用于生成随机字符 srand(time(0)); printf("请输入一行英文句子:\n"); gets(str);//读取一行英文句子 printf("请输入换位位数:"); scanf("%d", &n); for (i = 0, j = 0; str[i] != '\0'; i++) { if (str[i] != ' ') str[j++] = str[i]; //过滤掉空格 } len = j; //字符串长度 if(len%4 == 0) str[j] = '\0'; //结束符 else { for (i = 0; i < n - len % n; i++) //补齐不足的位数 str[j++] = sr[rand() % 62]; //生成随机字符 str[j] = '\0'; //结束符 } len = j; p = (char**)malloc(sizeof(char*)*(len/n)); for (i = 0; i < len / n; i++) { p[i] = (char*)malloc(n + 1); for (j = 0; j < n; j++) p[i][j] = str[i * n + j]; } //按列输出 for (j = 0; j < n; j++) { for (i = 0; i < len / n; i++) printf("%c", p[i][j]); } //释放内存 for (i = 0; i < len / n; i++) { free(p[i]); p[i] = 0; } free(p); p = 0; return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用
悬赏问题
- ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
- ¥15 下图接收小电路,谁知道原理
- ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
- ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
- ¥15 手机接入宽带网线,如何释放宽带全部速度
- ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
- ¥15 ETLCloud 处理json多层级问题
- ¥15 matlab中使用gurobi时报错
- ¥15 这个主板怎么能扩出一两个sata口
- ¥15 不是,这到底错哪儿了😭