我正在尝试将 int 数组转换为 c 中的字符串数组。到目前为止我的代码是:
int args[] = {1, 3000};
char *str_args[15];
int i = 0;
for(i; i<=((sizeof(args)/sizeof(args[0]))); i++){
char buffer[10];
sprintf(buffer, "%d", args[i]);
str_args[i] = buffer;
}
printf("%s\n", *str_args[0]);
这段代码导致我的程序崩溃,而不是像我期望的那样输出 1(第一个参数)。我在这里缺少什么?提前致谢
最佳答案
这是因为您将 str_args
的每个条目分配给本地指针,一旦循环循环,该指针就会超出范围。
您可能需要考虑strdup
:
str_args[i] = strdup(buffer);
当然,您必须释放
由strdup
分配的内存。
在循环之后打印时,当您想要打印字符串,但 *str_args[0]
取消引用第一个字符串时,也会遇到问题。即它是第一个字符而不是字符串。删除解引用运算符*
,它应该可以正常工作。
关于在 C 中从整数数组创建字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19747353/