Alocação dinâmica com arquivo binario

0 respostas
L

Galera estou com um probleminha aqui,
tenho esse programa que aloca a memória,
so que na hora de apresentar da bug.
Alguém pode me ajudar?

/*
Sintese
Objetivo:Levantamento de renda familiar de uma cidade

Entrada : Quantidade de habitantes e a renda de cada um

Saida :

*/

#include <stdio.h>

#include <conio.c>

typedef struct{

float renda;

}Cidade;
FILE *abreArquivo(char *nomeArq,char *modo);

void rendaHabitante(void);

void pesquisaDados(int contador);
int main(void)

{

// Declaracoes

char resp;

int contador;

// Instrucoes

do{

system(CLS);

printf(" Menu\n");

printf("[A] Informar renda por cidade\n");

printf("[B] Pesquisa por renda\n");

printf("[E] Encerrar\n");

printf(Opcao desejada: );

resp = toupper(getche());

getch();

switch(resp){

case A’:

rendaHabitante();

contador++;

break;

case B’:

pesquisaDados(contador);

}

}while(resp != E);

getch();

return 0;

}

void rendaHabitante(void){

FILE *arq;

int qntHab,cont;

Cidade <em>cidade;

system(CLS);

if((arq = abreArquivo(Cidade.dat,ab)) != NULL){

printf(Informe a quantida de habitantes na cidade: );

scanf(%d,&qntHab);

cidade = (Cidade</em>)malloc(sizeof(Cidade)*qntHab);

for(cont = 0; cont < qntHab; cont++){

printf([%d] Habitante\n,cont+1);

printf(Renda = );

scanf(%f,&cidade[cont].renda);

}

if(fwrite(&cidade,sizeof(Cidade),1,arq) != 1){

printf(Erro de gravacao de dados!”);

getch();

}

free(cidade);

}

fclose(arq);

getch();

}
FILE *abreArquivo(char *nomeArq,char *modo){

FILE *arq;

if ((arq = fopen(nomeArq,modo)) == NULL){

printf(“Nao foi possivel abrir o arquivo!\n”);

getch();

}

return arq;

}
[color=red]void pesquisaDados(int contador){

FILE *arq;

Cidade *cidade;

float rendaInfo;

int cont;

if((arq = abreArquivo(Cidade.dat,rb)) != NULL){

printf(Informe a renda que deseja ser pesquisada: );

scanf(%f,&rendaInfo);

while(feof(arq) == 0){

cont++;

if(fread(&cidade,sizeof(Cidade),1,arq) == 1){

if(cidade[cont].renda < rendaInfo){

printf("%.2f",cidade.renda);

}

}

}

}

fclose(arq);

getch();

}[/color]

:smiley:

Criado 29 de maio de 2012
Respostas 0
Participantes 1