1

我正在尝试对文件进行标记并将某些字符串插入到数组中。当我对文件进行标记并打印出每个标记时,它工作正常,但是当我将每个标记放入一个数组并打印出数组的内容时,内容根本不一样。

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]);              
}

我应该 malloc 文件名数组,还是 malloc 每个令牌?

4

1 回答 1

1

你不断地重复使用同一个指针。尝试类似:

filenames[i] = strdup(token);

你还应该记住free(filenames[i])当你完成它们时。


如果你没有,strdup你可以自己滚动或只使用:

filenames[i] = malloc(strlen(token) + 1);    /* XXX check malloc return. */
strcpy(filenames[i], token);
于 2012-12-05T21:31:49.100 回答