将字符串复制到二维字符串数组中

Copy a string into 2D array of strings

我有一个 c 代码可以标记我文件的内容。我想 copy/assign 每个标记到一个临时变量以将其放入列表中。我的温度被声明为 char *temp[MAX]。 这是我的代码,但 strcpy(temp[k], token) 中有问题。当我 运行 我的代码时,它强制关闭我的程序。但是,当我删除 strcpy line/statement 时,它 运行 正确并且不会强制关闭。但是我将令牌复制到临时文件的目标不会完成。有人知道为什么会这样吗?谢谢。

临时声明是全局的:char *temp[MAX]

void tokenize(FILE *input){

char *token;
int k=0;

char word[1000];
while(!feof(input)){
    fgets(word,1000,input);
    token = strtok(word, " \t\n");
        while(token!=NULL){             
            printf("%s\n",token);
            strcpy(temp[k], token);
            k++;
            token= strtok(NULL, " \t\n");
        }
}
printf("%s", temp[0]);
}

您需要为 temp 分配 space 才能使用它。是你做的吗?

temp[k] = (char *) malloc(strlen(token)+1);

在为 temp[k] 赋值之前将此行添加到您的代码中。