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