• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

AcidSphere

Ler strings de Ficheiro

9 mensagens neste tópico

Boas, gostaria que me elucidassem acerca desde problema eu já pesquisei mas não encontro informação que me possa ajudar a esclarecer.

Tenho estas linhas de código

int main(int argc, char *argv[])
{
  
char nome [100],localidade[100];
int MAX;
int idade,altura;


FILE *dados;  
  
dados = fopen("dados.txt","r");  
    
do{

fgets(nome,MAX,dados);

printf(" %s \n",nome);


}while(!feof(dados)); 

  fclose(dados);
  
  system("PAUSE");
  return 0;
}

Tenho o ficheiro dados.txt feito com este aspecto:

Ana Bernardo dos Santos

22

Portalegre

178

Joaquim Almeida Crisóstomo

26

Alegrete

182

Paulo Madeira Lopes

23

Arronches

167

A minha dúvida é como faço para que cada nome seja gravado no char nome e localidade no char correcto e idade e altura nos seus respectivos, espero que tenham compreendido o que desejo, porque depois necessitarei de fazer uma pesquisa por nome,localidade,altura ou idade.

Cumprimentos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Conselho: compila com a flag -Wall (ie: gcc -Wall ficheiro.c) que te ajuda a encontrar o erro no teu código.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não tenho qualquer erro ai, só não sei como armazenar a informação do nome, localidade, idade e altura em diferentes strings.

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se compilaste o código com a flag -Wall e não te deu nenhum erro é porque o teu código actual está diferente do que colocaste aqui porque o teu código tem um "erro". O fgets() vai lêr o quê se tu não especificas o tamanho do MAX? Até pode funcionar o código e MAX pode ter algum valor que faz o código funcionar, mas continua a ser um erro.

Sinceramente não percebo a tua dúvida, tens várias variáveis, como fgets() lês cada linha para cada variável respectiva. Onde está a dúvida?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E para uma boa prática de programação usa letras pequenas para variáveis e letras grandes para constantes. :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado Nazgulled, já entendi onde se encontra esse erro, mas a minha duvida era como podia fazer o seguinte código:

FILE *dados;  

dados = fopen("dados.txt","r");  
   
do{

fgets(nome,MAX,dados);
fgets(localidade,MAX,dados);

printf(" %s \n",nome);
printf(" %s \n",localidade);

}while(!feof(dados)); 

Uma forma para que o programa leia os nomes e coloque na string nome e leia uma localidade e coloque na string localidade, espero ter sido claro.

Cumprimento.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sabes trabalhar com estruturas?

Facilita-te muito o trabalho. :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sabes trabalhar com estruturas?

Facilita-te muito o trabalho. :D

Acho isso irrelevante para o que ele quer fazer e mais especificamente para o problema que estava a ter... Uma estrutura em nada ia facilitar, ias continuar a ler individualmente cada campo da estrutura. Onde é que lhe iria facilitar o trabalho?

De qualquer forma, parece-me que o problema já foi resolvido...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Peço desculpa, mas a está complicado expor a minha dúvida  :( :

int main(int argc, char *argv[])
{
  
    char nome[100],localidade[100];
    int idade[100],altura[100];
    int x = 0;

    FILE *dados;  
  
    dados = fopen("dados.txt","r");  
    
    do{


        nome[x]  = fscanf (dados, "%s", nome);
        idade[x]  = fscanf (dados, "%d", idade);
        localidade[x] =  fscanf (dados, "%s", localidade);
        altura[x] =  fscanf (dados, "%d", altura);

        x++;

    }while(!feof(dados)); 



    fclose(dados);
  
    system("PAUSE");
    return 0;
}

Acham que esta linha de código está correcta?

Como faço a seguir para fazer um printf de cada nome,idade....

Cumprimentos e obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora