所以,在编译一个我无法弄清楚如何修复的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
答案 0 :(得分:3)
您需要包含声明strsep
和strlen
#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));
没有效果,但浪费记忆力。