Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.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字符串数组_C - Fatal编程技术网

带文件的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应该用“”标记它们,但我不知道为什么要添加额外的行作为标记。知道为什么吗?