Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将字符串中的单词提取到动态2D字符数组中_C_String_Multidimensional Array_Tokenize_Dynamic Arrays - Fatal编程技术网

C 将字符串中的单词提取到动态2D字符数组中

C 将字符串中的单词提取到动态2D字符数组中,c,string,multidimensional-array,tokenize,dynamic-arrays,C,String,Multidimensional Array,Tokenize,Dynamic Arrays,我有一个包含字符串的动态字符数组。我试图将这个字符串中的所有单词提取到一个动态2d字符数组中。这是我的密码: int rows = 1; char *input_words = malloc((rows)*sizeof(char)); input_words = lowerCase(getInputWords(MAX_LINE_LEN, input_file)); //retrieves a string of words char **input_words_tokenized = mall

我有一个包含字符串的动态字符数组。我试图将这个字符串中的所有单词提取到一个动态2d字符数组中。这是我的密码:

int rows = 1;
char *input_words = malloc((rows)*sizeof(char)); 
input_words = lowerCase(getInputWords(MAX_LINE_LEN, input_file)); //retrieves a string of words
char **input_words_tokenized = malloc((wordCount(input_words))*sizeof(char)); 

for(i = 0; i < wordCount(input_words); i++) {
    input_words_tokenized[i] = malloc(MAX_KEY_LEN*sizeof(char)); 
}


char *t = strtok(input_words, " ");
j = 0;
while(t) {
    for(i = 0; i < strlen(t); i++) {
        strcpy(&input_words_tokenized[j][i], &t[i]);
        printf("%c", input_words_tokenized[j][i]);
    }
    j++;

    t = strtok(NULL, " ");
}
int行=1;
char*input_words=malloc((行)*sizeof(char));
input_words=小写(getInputWords(最大行长度,输入文件))//检索字符串
char**input_words_tokenized=malloc((wordCount(input_words))*sizeof(char));
对于(i=0;i
在我的输出中,
input\u words\u tokenized[j][i]
仅包含
input\u words
中的第一个单词或标记。为什么剩余的单词没有被标记化并存储到
input\u words\u标记化[j][i]

至少有一个问题

尺寸计算不正确

char **input_words_tokenized = 
    malloc((wordCount(input_words))*sizeof(char));
    // wrong type                          ^--^
与其根据希望匹配的类型调整大小,不如根据引用的类型调整大小。它更容易正确编码、检查和维护

char **input_words_tokenized = 
    malloc((wordCount(input_words)) * sizeof *input_words_tokenized);
    //                                       ^--------------------^

@它成功了!!!!我已经为此挣扎了几个小时,非常感谢:)