首页 > 解决方案 > 使用 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;
}

非常感谢!

标签: cstringmalloc

解决方案


至少你必须更换

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)读取字符串之间的分隔符是空格


推荐阅读