gpt4 book ai didi

c - 维吉尼亚密码 - 段错误

转载 作者:行者123 更新时间:2023-11-30 17:38:44 25 4
gpt4 key购买 nike

我正在尝试创建维吉尼亚密码,但遇到段错误。我是个新手,如果有人能提供帮助,我将不胜感激。预先感谢您。

// Mukul Patel February 26, 2014
int my_key(string key)
{
int key_length = 0;
while (key[key_length] != '\0')
key_length++;

return key_length;
}

int main(int argc, string argv[])
{
if (argc != 2){
printf("Please only enter two arguments which are non-numerical\n");
return 1;
}

string key = argv[1];

string plaintext = GetString();

for (int i = 0, length = strlen(plaintext); i < length; i++){
for (int j = 0, n = my_key(argv[i]); j < n; j++){
if(isupper(plaintext[i]))
plaintext[i] = ((((plaintext[i] - 'A') + (key[j % strlen(key)] - 'A')) % ALPHABET) + 'A');
else if(islower(plaintext[i]))
plaintext[i] = ((((plaintext[i] - 'a') + (key[j % strlen(key)] - 'a')) % ALPHABET) + 'a');
else
plaintext[i] = plaintext[i];

printf("%c", plaintext[i]);
}
}
printf("\n");

return 0;
}

最佳答案

这个:my_key(argv[i])排队for (int j = 0, n = my_key(argv[i]); j < n; j++) .

您只接受两个参数。所以大小为argv[]是 2。如果 i>=2 ,数组索引超出范围。因此可能会出现段错误。

关于c - 维吉尼亚密码 - 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22053085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com