首页 > 解决方案 > strcpy 到 C++ 中的多维数组

问题描述

我一直在尝试将单词复制到多维数组中时遇到问题。

这是我用来创建数组的代码:

char *word_buffer;
char *return_result[64];

int buffer_count = 0;
int word_start = 0;
int word_end = 0;

// Some extra, irreverent code.

for (int i = 0; i < length; i += 1) {
    if (text[i] == delim) { // Delim is a value such as '\n'
        word_end = i;
        word_buffer = (char*) malloc(sizeof(char)*64);
        strncpy(word_buffer, text + word_start, word_end - word_start); // Copy the word into word_buffer
        strcpy(*(return_result + buffer_count), word_buffer);

        word_start = i + 1;
    }
    
}

我相信我的问题在于最后一行。我试图给出strcpy一个指向我希望word_buffer放置结果的二维数组的地址的指针。但是,这会导致分段错误。

目标是返回一个单词数组。IE

char *result[10] = { "foo", "bar", "x", "y", "z" };

但是要使用代码动态完成此操作。我拆分单词的代码运行良好。虽然,我不知道如何将值放入二维数组。

编辑:用户 SHR 建议我尝试strcpyreturn_array[buffer_count]=word_buffer;. 这确实部分有效,但每次在数组中随机数量的值后崩溃。我真的不明白这可能是由于高内存使用率造成的。跟踪二进制文件的内存使用情况没有任何异常。

标签: c++arraysmalloc

解决方案


推荐阅读