我想从每个结构类型变量的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;