声明字符串后,我会得到一个分段故障。我不知道如何解决此错误 - 您能解释一下吗?
代码版本1(使用cs50.h
的typedef char *string;
):
int main (int argc, string argv[])
{
string key = argv[1];
checkKey(key, argc);
}
int checkKey(string text, int n)
{
//check if text is alphabetical and if argc has the desired amount of command-line elements
}
代码版本2:
#include <stdio.h>
#include <ctype.h>
#include <cs50.h>
int main (int argc, char* argv[])
{
printf("%d elements in argc and %s in argv[1]n", argc, argv[1]);
char* key = argv[1];
}
如果您在没有命令行参数的情况下运行程序,它将接收 argc
的值1
和尺寸2的数组argv
,其中 argv[0]
中的程序名称和 NULL
中的 CC_7。P>
如果您的函数charkKey()
表示它接收到的第一个参数的指针,则可以调用未定义的行为,这可能会导致分段故障。