我正在尝试编写加密算法。我改变了字母顺序。
char alfabe[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
更改后我想最后分配给字母z和y,但我不能用这些代码。
strcpy(alfabe[25],"z");
strcpy(alfabe[26],"y");
答案 0 :(得分:1)
这至少适用于小写字母:
char *p;
for(p = mystr; *p; p++)
if(*p >= 'a' && *p <= 'z')
*p = alfabe[*p-'a'];
答案 1 :(得分:0)
alfabe[24] = 'z';
alfabe[25] = 'y';
在这里使用strcpy是完全错误的。
答案 2 :(得分:0)
也许最清楚的是写:
alfabe['y' - 'a'] = 'z';
alfabe['z' - 'a'] = 'y';
这使得您在表格中交换y和z非常明显。
答案 3 :(得分:0)
您可以更轻松地执行简单的转置(Caesar cypher)机制,而无需手动定义字母表。
char* text;
int i, num_transpose;
for(i=0; a[i] != '\0'; i++)
if (a[i] >= 'a' && a[i] <= 'z')
text[i] = (text[i] - 'a' + num_transpose) % ('z'-'a'+1) + 'a';
这会将文字中的字母移动num_transpose
个字母。请注意,这只适用于小写ASCII字母。