1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Ler strings de ficheiro

Discussão em 'Programação' iniciada por TheRunner, 20 de Maio de 2009. (Respostas: 4; Visualizações: 1054)

  1. TheRunner

    TheRunner Power Member

    Bem pessoal o problema é o seguinte, eu tenho que ler de um ficheiro elementos de uma musica, ou seja, titulo da musica, banda/artista e duração. Após uma tentativa com fscanf percebi que não dava pois lia-me só palavras e não a frase toda. O ficheiro (é um excerto) tem a seguinte estrutura:

    Estou a tentar ler com o seguinte código:

    Os printfs foram para testar e a DIM é igual a 30. O resultado é este:

    É um output bastante confuso e com mudanças de linha a mais :s

    Bem se alguém me poder dar uma mãozinha agradecia ;)

    Cumps
     
  2. MadOnion

    MadOnion Folding Member

    Tanto quanto sei o fgets conversa o \n num ficheiro, daí recomendo que tires o ultimo caracter(aconselhável, vais ao ultimo elemento da string e colocas '\0'), ou que retires o \n no printf.
     
  3. TheRunner

    TheRunner Power Member

    Sinceramente não percebi muito bem.. Podias ser um bocado mais específico? Obrigado ;)
     
  4. Genome_Boy

    Genome_Boy Power Member

    Ao usares o fgets ele lê o ficheiro até chegar a, por exemplo, um \n o qual é também lido.
    Desse modo tens uma string que é "qualquer coisa\n"
    E ao fazeres o printf estás a fazer "qualquer coisa\n\n" o que resulta em 2 mudanças de linha.

    Das duas uma:
    Fazes strlen da string que leste e mudas o ultimo caracter da string para \0 em vez do \n

    ou

    no printf tiras o \n (solução pior na minha opinião porque só estás a remediar o problema).

    Claro que isto depende do tipo de trabalho que tens de fazer.

    Cumps
     
  5. TheRunner

    TheRunner Power Member

    O trabalho é inserir os dados numa lista com a estrutura:

    char *titulo
    char *banda
    int duracao
    MusPtr prox;

    Qual é que achas a melhor solução? Em principio será a de usar o strlen certo? É que eu não posso alterar o ficheiro de input..
     

Partilhar esta Página