我试图从文件中读取未知数量的整数,并将它们存储在链表中的int指针中:
typedef struct BCP BCP;
struct BCP
{
int *schedule;
BCP *next;
};
然后,假设nouveauBCP
是一个节点:
nouveauBCP->schedule = (int *) malloc(sizeof(int));
fscanf(P,"%d", &nouveauBCP->schedule);
printf("%d |",nouveauBCP->schedule);
while (fgetc (P) != '\n')
{
nouveauBCP->schedule = (int*)realloc(nouveauBCP->schedule, sizeof(int));
fscanf(P,"%d", nouveauBCP->schedule[i]);
printf("%d-", nouveauBCP->schedule[i]);
i++;
}
如何在`nouveauBCP-> schedule [i]中访问读写?甚至可以在链表中使用realloc吗?
答案 0 :(得分:0)
正如其他人指出的那样,你的代码没有利用链表,因此看起来有点奇怪,但由于我不知道你的整体设计,我将专注于你提交的代码。
您缺少变量i
的初始化,而您的realloc()不会增加schedule
字段指向的内存量。
我拿了你提供的代码并添加了一些更正:
nouveauBCP->schedule = (int *) malloc(sizeof(int));
fscanf(P,"%d", &nouveauBCP->schedule);
printf("%d |",nouveauBCP->schedule);
int i = 0; //initialize i variable
while (fgetc (P) != '\n')
{
if(i>1) // we do not want to reallocate if i is less than 1
{
nouveauBCP->schedule = (int*)realloc(nouveauBCP->schedule, i*sizeof(int));
}
fscanf(P,"%d", &nouveauBCP->schedule[i]); //fscanf needs a pointer to memory
printf("%d-", nouveauBCP->schedule[i]);
i++;
}
请注意fscanf()需要指向存储整数的内存的指针,因此您应该使用&nouveauBCP->schedule[i]
。