O problema é que o programa tá escrevendo no arquivo de saída o nome da cidade com os nomes misturados, já o numero de habitantes está saindo correto. Gostaria de saber o porquê ta ocorrendo esse erro.
Deste já agradeço
arquivo de texto:
cidade.txt:
958545 são luis
12040000 são paulo
6320000 rio de janeiro
e a saída tá saindo assim:
A cidade mais populosa é :
são paulorio de janeiro com nº de habitantes = 12040000
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char const *argv[])
{
char str1[30],str2[30],cidades[40][10];
int n=0,i=0,habitantes[10],j,status=0;
printf("Digite o nome do arquivo de entrada: "
scanf("%s",str1);
printf("Digite o nome do arquivo de saida: " );
scanf("%s",str2);
FILE *arquivo;
arquivo = fopen(str1,"r"
if(arquivo == NULL)
{
printf("O arquivo não encontrado ou não pode ser aberto\n"
exit(1);
}
while (!feof(arquivo))
{
fscanf(arquivo,"%d\t %[^\n]s",&habitantes[i],cidades[i]);
i++;
n++;
}
// laço para verifica qual vetor possui o maior numero entre os demais
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(habitantes[i]>habitantes[j])
{
if(j== (n-1))
status = 1; // encerra os dois laços
}
else if (habitantes[i]==habitantes[j])
{
continue;
}
else
break;
}
if (status)
break;
}
fclose(arquivo);
if (!(arquivo = fopen(str2,"w")) // Caso ocorra algum erro na abertura
{
printf("Erro! Impossivel abrir o arquivo!\n"
}
else
fprintf(arquivo,"A cidade mais populosa é : \n%s com nº de habitantes = %d \n",cidades[i],habitantes[i]);
fclose(arquivo);
return 0;
}