在 C 中从整数数组创建字符串数组

标签 c arrays pointers c-strings

我正在尝试将 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/

相关文章:

检查 C 字典中的单词

c - 使用文件时出错

你能在c中的函数调用中调用函数吗

javascript - 将已排序数组的索引引用到旧数组(Javascript)

二维数组的正确下标排序

c - IP 地址 char* 变量在循环从 ifa_addr 收集地址时意外更改

c - 如何检测数组中的重复项并打印非重复项?

C++ 数组不输出完整值

java - java中排序数组包含一些数组

c++ - strdup 指针版本需要一个临时指针