gpt4 book ai didi

c - 无效插入/列表不起作用 - C

转载 作者:行者123 更新时间:2023-11-30 16:36:51 25 4
gpt4 key购买 nike

当我在程序中插入 2 个或更多人员时,当我尝试列出结果时,我只能得到我插入的第二个人员的姓名。

我想插入尽可能多的人,并列出所有姓名和属性(property)..然后我想计算我正在搜索的房子的平均年龄。

这是我的插入/列表代码:

void inserir()
{
FILE *fCasa; //Apontador para ficheiro
fCasa = fopen(NomeFicheiro, "rb+");
if (fCasa == 0) {
fCasa = fopen(NomeFicheiro, "wb");
fclose(fCasa);
fCasa = fopen(NomeFicheiro, "rb+");
}
//Ficheiro aberto e pronto para ler/escrever

struct defCasa Casa;
int C = 0;
int C1 = 0;
printf("\nNumero da Porta:");
scanf("%d",&Casa.NumeroPorta);
printf("Numero de Pessoas:");
scanf("%d",&Casa.NumeroPessoas);
C = Casa.NumeroPessoas;
while (C1 != C) {
C1++;
printf("Nome da %da Pessoa:", C1);
scanf("%s",Casa.NomePessoas);
printf("Idade da Pessoa:");
scanf("%d",Casa.Idade);

}
printf("Contacto da casa:");
scanf("%d",&Casa.NumTlm);

Casa.estado = 1;
fseek(fCasa, 0, SEEK_END);
fwrite(&Casa, 1, sizeof(struct defCasa), fCasa);
fclose(fCasa);
}


void listar ()
{
int C = 0;
int C1 = 0;
int NrRegistos = 0;
int AcumuladoPessoas = 0;
FILE *fLer;
fLer = fopen(NomeFicheiro, "rb+");
if (fLer != 0) {
struct defCasa Armazena;
fseek(fLer, 0,SEEK_SET);
while (fread(&Armazena, 1, sizeof (struct defCasa), fLer) != 0) {
if (Armazena.estado == 1) {
printf("Na Casa %d moram %d pessoas\n", Armazena.NumeroPorta,Armazena.NumeroPessoas);
C = Armazena.NumeroPessoas;
C1 = 0;
while (C1 != C) {
C1++;
printf("Constituintes da familia: %s\n",Armazena.NomePessoas);
}
printf("Contactos:%d",Armazena.NumTlm);
NrRegistos++;
AcumuladoPessoas += Armazena.MaximoNumeroPessoas;
}
}

fclose(fLer);
if (NrRegistos > 0) {
printf("\nA media de idades e: %f\n", (float)AcumuladoPessoas/NrRegistos);
}
}
}

最佳答案

在函数 inserir 中,您让用户在循环中输入多个日期 while (C1 != C) { ...,但您将每个输入存储在结构体的相同数据成员。因此,当您总是写入同一个位置时,第二个输入会覆盖第一个输入。

我认为这个数据成员 Casa.NomePessoas 应该是一个字符串数组而不是单个字符串,这样您就可以编写,例如 scanf("%s",Casa .NomePessoas[C1]);当然,这同样适用于 Casa.Idade

关于c - 无效插入/列表不起作用 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48268780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com