【发布时间】:2016-09-29 13:56:39
【问题描述】:
我正在尝试将一个字符串复制到一个数组并打印它。它适用于第一个 for 循环,但第二次出现 seg 错误。
main (int argc, char *argv[]){
int argcIndex;
char **argumentArray = NULL;
for(argcIndex=0; argcIndex < argc; argcIndex++){
argumentArray = (char**) malloc((argc+1)*sizeof(char*));
argumentArray[argcIndex] = (char*) malloc(((strlen(argv[argcIndex])+1)*sizeof(char)));
strcpy(argumentArray[argcIndex], argv[argcIndex]); //Works here
printf("argumentArray[%d]: %s \n", argcIndex, argumentArray[argcIndex]); //Works here
}
for(argcIndex=0; argcIndex < argc; argcIndex++){
//strcpy(argumentArray[argcIndex], argv[argcIndex]); //This gives me a segfault
printf("argumentArray[%d]: %s \n", argcIndex, argumentArray[argcIndex]); //This will only grab the last string in array
}
}
【问题讨论】:
-
@SouravGhosh 我拿走了演员表,第二个 printf 语句仍然只抓取传入数组的最后一个字符串
标签: c arrays pointers segmentation-fault malloc