【发布时间】:2014-10-08 05:00:45
【问题描述】:
我正在尝试将命令行参数连接成一个字符串。我最初使用字符类型的指针来声明字符串。
char *str;
strcpy(str, argv[1]);
int i = 2;
while(i < argc) {
realloc(str, sizeof(str) + sizeof(argv[i]) + 1);
str = strcat(str,argv[i]);
i+=1;
}
printf("%s", str);
free(str);
如您所见,我正在重新分配内存块以连接新字符串。但我得到分段错误:11
【问题讨论】:
-
sizeof(str)并没有按照你的想法去做。它通常是 8 或 4,具体取决于您的平台。sizeof(argv[i])是一回事。 -
除此之外,您的第一个
strcpy()(在循环之前)已经尝试使用未初始化的指针复制数据。
标签: c segmentation-fault strcat