我该如何处理这些C警告?

时间:2013-04-08 15:55:17

标签: c warnings variable-assignment declaration implicit

所以,在编译一个我无法弄清楚如何修复的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

2 个答案:

答案 0 :(得分:3)

您需要包含声明strsepstrlen

的标头
#include <string.h>

答案 1 :(得分:1)

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

修改你的代码就像这样:

char line[100];
char * carbonCopy;

...

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

请注意,carbonCopy不是line的副本,而只是对它的引用,它表示它指的是line包含的数据。


这一行

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

没有效果,但浪费记忆力。