c - 使用 malloc 为 C 中的字符串分配内存
问题描述
我正在尝试使用 malloc 为字符串数组分配内存。在用户输入之前,每个字符串的大小是未知的,所以这就是我尝试为数组中的每个元素分配内存的方式。
我的代码有一些错误,但无法弄清楚或无法理解它们。我收到有关分配的错误。谁能告诉我这有什么问题?
bool read_strings(char * strings[], int n)
{
int i = 0;
while (i<n)
{
char string[MAX_LENGTH];
if (scanf("%s", string)!=1)
return false;
char* memory= (char*)malloc(sizeof(char)*strlen(string));
if (memory == NULL)
return false;
memory = string;
strings[i] = memory;
i++;
}
return true;
}
非常感谢!
解决方案
至少你必须更换
char* memory= (char*)malloc(sizeof(char)*strlen(string));
if (memory == NULL)
return false;
memory = string;
strings[i] = memory;
经过
strings[i] = strdup(string)
注意使用scanf("%s", string)
读取字符串之间的分隔符是空格
推荐阅读
- javascript - 设置动态添加的输入字段的值会更改所有输入字段
- swift - 更新 View Swift 的自定义属性包装器
- jenkins - 如何在詹金斯管道中制作并行包装器
- jquery - JQuery Element.append 导致警告主线程上的同步 XMLHttpRequest 已弃用
- neural-network - 获得游戏回合和游戏状态作为输入的神经网络
- javascript - 如何根据请求发送 XMLHttpRequest?
- javascript - 为什么 onChange 在一个特定用例中不触发?
- mysql - OSGi 途中:如何使用 MySQL 而不是默认的 H2
- r - 具有分类/因子变量的多级多重插补(MICE)?
- google-api - 有没有办法使用 google doc API 用样式文本替换文本?