【发布时间】:2015-11-29 10:47:50
【问题描述】:
我有一个标记文件内容的 c 代码。我想将每个标记复制/分配给一个临时变量以将其放入列表中。我的 temp 被声明为 char *temp[MAX]。 这是我的代码,但 strcpy(temp[k], token) 有问题。当我运行我的代码时,它会强制关闭我的程序。但是,当我删除 strcpy 行/语句时,它会正确运行并且不会强制关闭。但是我将令牌复制到 temp 的目标不会完成。有人可以知道为什么会这样吗?谢谢。
临时声明是全局的: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]);
}
【问题讨论】:
-
寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建最小、完整和可验证的示例。
-
在从
token复制之前,您需要为temp[k]分配空间。 -
如何为 temp[k] 分配空间?无论如何,如果我删除 strcpy 行,程序将正常运行,但是,我将令牌复制到 temp 的目标将失败。
-
例如
temp[k] = malloc(strlen(token)+1); strcpy(temp[k], token);