改变字母/ C

时间:2012-05-06 12:46:57

标签: c arrays alphabetical

我正在尝试编写加密算法。我改变了字母顺序。

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");

4 个答案:

答案 0 :(得分:1)

这至少适用于小写字母:

char *p;
for(p = mystr; *p; p++)
    if(*p >= 'a' && *p <= 'z')
        *p = alfabe[*p-'a'];

但请记住,transposition is not encryption

答案 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字母。