所以我想基本上进行加密。我这样做的方法是创建两个数组并切换值。我遇到的问题是,当数组只是字符数组时,它不起作用。但是,当我转换为ASCII数字时,它确实可以。这是两个数组的示例:
sub-menu-title
然后,我为纯文本和加密文本创建了值,并为for循环创建了值。例如。
char* plainarray[26] = ["a","b","c"] //this would go on for the entire alphabet
char* cryptarray[26] = ["p","j","n"] //this array is the entire alphabet randomized
然后我使用两个for循环将被加密的值添加到“ crypt”中
char plain[5] = "hello";
char* change[5] = {};
int i;
int j;
length = strlen(text); //length of string for for loop
编译时收到的警告代码是:
for(i=0; i<length; i++){
for (j = 0; j <26; j++){
if (plain[i] == plainarray1[j]){
change[i] = cryptarray2[j];
}
}
}
我的问题的一种解决方案是在纯文本数组中使用ASCII数字并将其设置为int数组。这将比较两个字符,但是对于该问题,字母顺序将是随机的,因此我无法做到这一点。有一个更好的方法吗?我对修改后的文本(“更改”)的数组和赋值是否正确?它不能给他正确的输出。
答案 0 :(得分:2)
您要存储指向字符串的指针数组。取消引用指针数组将为您提供一个指针。要存储字符数组,请输入:
const char plainarray[26] = {'a', 'b', 'c', \* ... */ };
或
const char plainarray[] = "abc...";
后者并不完全相同,因为它在末尾有一个额外的字节来终止字符串。
答案 1 :(得分:1)
此类型:
char* plainarray[26] = ...
是一个指向字符的指针数组,不是是一个字符数组。更改为此:
char* plainarray = "abc...";
然后,您可以像这样访问数组:
printf("%c", plainarray[0]); // prints 'a'
答案 2 :(得分:0)
您正在将指向==
的字符串的指针进行比较,这是不正确的,因为它们显然都位于不同的地址。
如果您确实打算将plainarray
和cryptarray
存储为以空值结尾的字符串的指针数组,每个指针都包含一个字母,则可以使用strcmp
函数进行比较它们(或者,由于指向的每个字符串都是一个字符长加上空终止符,因此您可以比较两个字符串的位置[0]
)。
但是,在我看来,将plainarray
和cryptarray
存储为纯char
的数组更有意义。