带文件的C字符串数组
我试图标记一个文件并将某些字符串插入数组。当我标记文件并打印出每个标记时,效果很好,但当我将每个标记放入数组并打印出数组的内容时,内容根本不一样带文件的C字符串数组,c,C,我试图标记一个文件并将某些字符串插入数组。当我标记文件并打印出每个标记时,效果很好,但当我将每个标记放入数组并打印出数组的内容时,内容根本不一样 char *filenames[1000]; token = strtok(line, " "); while (token != NULL) { printf("%s\n", token); /*
char *filenames[1000];
token = strtok(line, " ");
while (token != NULL) {
printf("%s\n", token);
/*
filenames[i] = token;
i++;
*/
token = strtok(NULL, " ");
}
ck = fgets(line, 1000, fp);
for (j = 0; j <= i; j++){
printf("%s \n", filenames[j]);
}
char*文件名[1000];
令牌=strtok(第行“”);
while(令牌!=NULL){
printf(“%s\n”,标记);
/*
文件名[i]=令牌;
i++;
*/
令牌=strtok(空,“”);
}
ck=fgets(线,1000,fp);
对于(j=0;j您不断重复使用同一指针。请尝试以下操作:
filenames[i] = strdup(token);
您还应该记住,当您处理完文件名[i])时,要free(文件名[i])
如果您没有strdup
,您可以自己滚动或直接使用:
filenames[i] = malloc(strlen(token) + 1); /* XXX check malloc return. */
strcpy(filenames[i], token);
您不断重复使用同一指针。请尝试以下操作:
filenames[i] = strdup(token);
您还应该记住,当您处理完文件名[i])时,要free(文件名[i])
如果您没有strdup
,您可以自己滚动或直接使用:
filenames[i] = malloc(strlen(token) + 1); /* XXX check malloc return. */
strcpy(filenames[i], token);
谢谢!我使用了malloc而不是strdup,它成功了。但是,出于某种原因,当我标记我的文件时,即使我的单词之间没有行,行也被作为标记插入。我的文件如下所示:filename frequency filename frequency。我只想在filename数组中插入唯一的文件名。strok应该将通过“”标记它们但是我不知道为什么要添加额外的行作为标记。知道为什么吗?谢谢!我使用malloc而不是strdup,它起了作用。但是出于某种原因,当我标记我的文件时,行作为标记插入,即使我的字之间没有行。我的文件看起来像这样:filename-frequency filename-frequency我想在文件名数组中插入唯一的文件名。strtok应该用“”标记它们,但我不知道为什么要添加额外的行作为标记。知道为什么吗?