【发布时间】:2015-08-10 16:22:11
【问题描述】:
我正在尝试编写一个可以读取/写入 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;
}
【问题讨论】:
-
在
strcpy(filename,argv[1]);之前添加else。否则,即使argv[1]是NULL,这个strcpy也会执行。 -
@Cool Guy,
strcpy仅在argv为NULL时才会执行。我认为这是他的意图,因为他希望名称默认为"myRolodex",如果argv[1]等于NULL。但是你在第二个 strcpy 上是对的,在那之前应该有一个 else。 -
顺便说一句,与其检查
argv[1]是否为NULL,不如检查argc < 2是否为NULL。对于您的问题,确实您必须添加一个else声明。
标签: c segmentation-fault strcpy