我想将文件中的记录加载到动态数组中。我有以下代码:realloc后无效的结构体大小
typedef struct my_data {
char name[100];
}my_data;
struct my_data *data;
void load_data()
{
struct my_data *temp = NULL;
int i = 0;
FILE * in;
if((in = fopen("data.txt","rt")) != NULL) {
temp = malloc((i+1)*sizeof(my_data));
while(!feof(in))
{
fscanf(in,"%s", &temp[i].name);
i++;
temp = realloc(temp,((i+1)*sizeof(my_data)));
};
fclose(in);
data = temp;
free(temp);
for (i=0;i<sizeof(data);i++)
printf("%s\n",data[i].name);
}
我有超过100条记录。为什么它只显示4?
我明白了,你是对的。但有没有其他的方式来导出记录的数量,除了让int我是全局的? –
@SamReina您始终可以将指针与尺寸一起传递。或者你可以把指针和大小放在一个结构体中。 –
感谢您的通知,但该循环仅用于测试目的。所以我应该在结构中添加int(循环外部)或每个值(循环内部)的总值,对于最后一种情况,我该如何计算总数?我的意思是,如果对于每个数组[i] int的相应值是i,我不知道它是如何计算总数的。或者我应该从最后一个元素中得到整数吗?很抱歉有这么多问题,但我还在努力学习 –