C 中 strcpy() 的分段错误(核心转储)错误

Segmentation fault (core dumped) error by strcpy() in C

我正在尝试编写一个可以 read/write rolodex 信息的程序(该文件将默认命名为 myRolodex)。但我认为行: strcpy(filename,"myRolodex"); 在我的 GCC 编译器中导致分段错误(核心转储)。

任何修复帮助将不胜感激!

#include<stdio.h>
#include <stdlib.h>
#include<string.h>
#include<stdbool.h>
int main(int argc, char* argv[]){
    char filename[250];
    if (argv[1]==NULL){
        strcpy(filename,"myRolodex");
    }
    strcpy(filename,argv[1]);
    printf("%s",filename);
    return 0;
}

按如下方式更正您的代码

if (argv[1]==NULL){
        strcpy(filename,"myRolodex");
    }else{
    strcpy(filename,argv[1]);
}

问题是,即使你检查 argv[1]==NULL,statment strcpy(filename,argv[1]);将始终执行,因为它不在 else 块中。