字符串声明分段错误
String declaration segmentation fault
声明字符串后,出现分段错误。
我不知道如何解决这个错误——你能解释一下吗?
代码版本 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]
中的程序和 argv[1]
中的 NULL
中的程序。
如果您的函数 charkKey()
取消引用它作为第一个参数接收的指针,您将调用未定义的行为,这可能会导致分段错误。
声明字符串后,出现分段错误。 我不知道如何解决这个错误——你能解释一下吗?
代码版本 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]
中的程序和 argv[1]
中的 NULL
中的程序。
如果您的函数 charkKey()
取消引用它作为第一个参数接收的指针,您将调用未定义的行为,这可能会导致分段错误。