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

时间:2015-05-28 09:00:33

标签: c segmentation-fault strcpy

我正在尝试编写一个可以读取/写入rolodex信息的程序(该文件默认名称为myRolodex)。但我认为行strcpy(filename,"myRolodex");导致我的GCC编译器出现Segmentation fault(core dumped)。

任何帮助修复都会感激不尽!

#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;
}

1 个答案:

答案 0 :(得分:2)

按如下方式更正您的代码

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

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