【发布时间】:2017-03-24 16:46:00
【问题描述】:
我正在开发一个具有多个结构的数据库。我已经定义了一个从 csv 文件加载数据并将每一行存储为结构的函数。我使用双指针存储它们,因此一个指针指向每个结构变量的多个指针。该函数确实正确返回双指针,但是我收到警告:从不兼容的指针类型返回。
我的代码如下:
struct part** loadParts(char* fileName, int m)
{
typedef struct part
{
int id;
int cost;
} Part;
FILE* fptr = fopen(fileName, "r");
//creat pointer to array of pointers to part structs
Part** parts;
parts = malloc((nParts) * sizeof(Part *));
//length of one line
char line[1000];
//while new items can be added
int i;
i=0;
while (fgets(line, sizeof(line), fptr)!= NULL)
{
parts[i] = malloc(sizeof(Part));
//get id
int id = atoi(strtok(line, ";"));
parts[i]->id = id;
// get cost
int id = atoi(strtok(line, ";"));
parts[i]->cost = cost;
i++;
}
fclose(fptr);
return parts;
}
有人知道为什么会出现此警告吗?非常感谢!
【问题讨论】:
-
你能告诉你代码中的哪个语句收到了警告吗?
-
谢谢,我在复制代码时出错了! :)
-
您确定
struct part与您的函数中的Part相同吗?如果我是你,我会有一个这种类型的全局定义,并在函数内部去掉第二个定义。 -
@Drent,我会完全删除这个定义,因为全局命名空间中已经有一个。
-
@SMFSW 警告是为了突出代码中需要修复的问题,而不是用一个考虑不周的问题来解决问题!