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]
