求助!想知道为什么这段代码运行的时候总是显示Segmentation fault。
这段代码在argv的位置应输入的是数字,但是每次运行的时候,比如./ caesar 2,就会显示Segmentation fault。豪无头绪,请大神帮忙!#include <cs50.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <ctype.h>
int main(int argc, string argv[])
{
if (argc == 2 && isdigit(argv))
{
int key = atoi(argv);
string plaintext = get_string("plaintext: ");
printf("ciphertext: ");
for (int i = 0, len = strlen(plaintext); i < len; i++)
{
char c = plaintext;
if (isalpha(c))
{
if (islower(c))
{
printf("%c", (((c - 97) + key) % 26) + 97);
}
if (isupper(c))
{
printf("%c", (((c - 65) + key) % 26) + 65);
}
else
{
printf("%c", c);
}
}
}
return 0;
}
else
{
printf("Usage: ./caesar key\n");
return 1;
}
}
get_string
是什么,不记得有这个库函数。
segmentation fault 通常都是修改非法地址导致的。
页:
[1]