我不明白为什么会出现 "Segmentation fault (core dumped)" 错误

I don't understand why I am getting "Segmentation fault (core dumped)" error

我正在编写一个在文件中搜索字符串的 C 程序。当我从命令行编译和执行程序时,出现分段错误。我知道这个错误意味着我无权访问我试图写入的内存,但我看不出这是如何在我的程序中发生的。这是我的 main 函数中发生错误的代码段:

int num_of_arguments = argc;
char *filename = argv[2];
char *search_string;

strcpy(search_string, argv[1]);

int i = 0;
while (search_string[i]) {
    tolower(search_string[i]);
    i++;
}

在你的代码中

 strcpy(search_string, argv[1]);

在您尝试写入由 search_string 指向的单元化内存时调用 undefined behavior。由于您没有明确初始化 search_string ,指针(指针值)是不确定的,很可能它指向某个无法从您的程序访问的内存位置。因此指针本质上指向无效内存位置。

您需要先为 search_string 分配内存,然后才能 复制 到其中。

否则,在执行strcpy().

之前,使search_string成为一个足够长的数组,可以容纳argv[1]的内容(包括空终止符)

您正在使用 search_string 而不进行初始化,而不是:

strcpy(search_string, argv[1]);

你应该使用:

search_string=strdup(argv[1]);

看: strcpy vs strdup