1

所以,在编译一个我不知道如何修复的 C 文件时,我收到了一些警告。

第一个警告来自以下代码:

char line[100];
char* carbonCopy;
char *currentWord;
wordlist *theList = malloc(sizeof(wordlist));
theList->head->string = NULL;
word *fromFile = malloc(sizeof(word));

while(fgets(line,99,file)){
    if(line != NULL){
        carbonCopy = line;

        while((currentWord = strsep(&line, " ")) !=NULL)
        {
            malloc(strlen(currentWord)*sizeof(char));
            fromFile->string = currentWord;
            fromFile->next = malloc(sizeof(word));

警告指出:

从不兼容的指针类型传递“strsep”的参数 1 [默认启用]

4

2 回答 2

3

您需要包含声明strsepstrlen

#include <string.h>
于 2013-04-08T15:56:36.050 回答
2

strsep()期望 achar **作为第一个参数,但您的来源使用char (*)[100].

修改你的代码,例如这样:

char line[100];
char * carbonCopy;

...

carbonCopy = line;
while((currentWord = strsep(&carbonCopy, " ")) !=NULL)

请注意,这carbonCopy不是它的副本,line而只是对其的引用,也就是说,它指向line包含的数据。


这条线

malloc(strlen(currentWord)*sizeof(char));

没有效果,但是浪费内存。

于 2013-04-08T16:55:20.803 回答