我正在尝试创建一个vigenere密码,我遇到了分段错误。我很新,如果有人可以提供帮助,我将非常感激。提前谢谢。
// 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;
}
答案 0 :(得分:0)
这是my_key(argv[i])
行for (int j = 0, n = my_key(argv[i]); j < n; j++)
。
你只接受两个论点。因此argv[]
的大小为2.如果i>=2
,则数组的索引超出范围。因此它可能会给出分段错误错误。