【发布时间】:2013-04-12 17:01:36
【问题描述】:
我对 C 语言很糟糕,并且在使用 strcpy 时遇到了麻烦。我正在尝试获取其中一个函数参数并将其存储在 char 数组中。当我运行它时,我得到一个分段错误,但我不明白为什么。我究竟做错了什么?谢谢!
struct bb_state {
FILE *logfile;
char *rootdir;
};
struct bb_state *bb_data;
bb_data = malloc(sizeof(struct bb_state));
strcpy(bb_data->rootdir, argv[argc-2]);
【问题讨论】:
-
需要确保指针(
bb_data->rootdir) 指向的区域。 -
您是否检查了
bb_data->rootdir的大小。在char * strcpy ( char * destination, const char * source )中:为避免溢出,destination 指向的数组的大小应足够长,以包含与source 相同的C 字符串(包括终止的空字符),并且不应在内存中与源重叠。