将文本文件读取到动态结构数组

时间:2019-05-15 18:52:47

标签: c file struct scanf memory-reallocation

我想从每个结构类型变量的N个字符保留的文本文件中读取数据。
文本文件类似于:

1  111 1 Peter
22 22  2 John Lays
3  3   3 Anne Belgs

数据必须处于动态数组结构中。
如何为该结构分配内存?
结构是:

typedef struct {
    int id, potencia, avariado;
    char name[11]; 
} estruturaCarro;

数据通过以下方式写入文件:

fprintf(fp, "%-2d %-3d %-1d %-10s \n\n", carro.id, carro.potencia, carro.avariado, carro.name);

将文本文件读取到数组:

FILE *fp=NULL;
estruturaCarro carro;
estruturaCarro *vetor=NULL;
...
int registos=0;
while(1) {
    void *tmp = realloc(vetor, sizeof(carro)*(registos+1));
    vetor=tmp;
    fscanf(fp, "%d %d %d %s", &vetor[registos].id, &vetor[registos].potencia, &vetor[registos].avariado, &vetor[registos].name);
    if(feof(fp)){ break; }    
    registos++;
}

释放动态内存:

int i;
for(i=0; i<regs; i++)
{
    free(vetor[i].id);
    free(vetor[i].potencia);
    free(vetor[i].avariado);
    free(vetor[i].name);
}
free(vetor);
vetor=NULL;

0 个答案:

没有答案