作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建维吉尼亚密码,但遇到段错误。我是个新手,如果有人能提供帮助,我将不胜感激。预先感谢您。
// 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/
我是一名优秀的程序员,十分优秀!