从文件中读取未知数量的 int 到链表

Read unknown amount of int from file to linked list

我正在尝试从文件中读取未知数量的整数并将它们存储在链表中的 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 吗?

正如其他人指出的那样,您的代码没有利用链表,因此看起来有点奇怪,但是由于我不知道您的总体设计,所以我将专注于您提交的代码。

您缺少变量 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]