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

leitura de caracteres de um ficheiro

Discussão em 'Programação' iniciada por bakardi, 2 de Novembro de 2008. (Respostas: 10; Visualizações: 886)

  1. bakardi

    bakardi Folding Member

    Boas,
    preciso de uma ajudinha em C,é o seguinte...quero criar um codigo que leia de um ficheiro 7 caracteres(N,T,S,P,E,R,C)....caso ele nao encontre um deles imprime um erro com uma mensagem explicita...por varias vezes que ja matutei nao encontro um codigo que faça exactamente isso....sera que alguem me podia dizer como fazer?


    PS: dentro do ficheiro encontram-se outros tipos de texto como strings,inteiros e floats.

    cumps
     
  2. bakardi

    bakardi Folding Member

  3. The Dealer

    The Dealer Power Member

    Basicamente o que tens de fazer é pores um char ch por exemplo a percorrer todos os caracteres do ficheiro até EOF, e se ele nao corresponder à tua condição imprime a mensagem de erro.
     
  4. dreamerboy

    dreamerboy Power Member

    O fgetc resolve-te isso.

    A cada caracter lido compara com os teus 7 caracteres, se se confirmar a existência de um deles incrementa o seu valor (para cada uma das 7 letras atribui uma variável int inicializada a zero), no fim da leitura do ficheiro faz uma multiplicação com as 7 variáveis, caso devolva zero apresentas a tal mensagem de erro.

    Em vez de variaveis int podes usar tmb booleanos, nao incrementas mas sim mudas o valor de false pra true e no fim fazes um AND.

    Acho que assim dá o que queres.
     
  5. bakardi

    bakardi Folding Member

    mostra-me la um exemplo do que tas a dizer para ver se percebi

    cumps
     
  6. Baderous

    Baderous Banido

    Precisas de 7 variáveis, que vão corresponder às 7 letras e que vão ser incializadas a 0. Depois, usas a função fgetc dentro de um ciclo para leres do ficheiro. À medida que lês, verificas, por exemplo com um switch (para não teres 7 ifs), se acabaste de ler uma das 7 letras. Se sim, a variável correspondente a essa letra passa a ter o valor 1. No fim de leres tudo basta testar se todas têm o valor 1. Se sim, tudo bem. Caso contrário, imprimes a mensagem.
     
  7. bakardi

    bakardi Folding Member

    alguem me sabe dizer porque é que se eu fizer o codigo assim:
    quando compilo ele diz que encontrou 0 N's e 0 T's?
     
  8. MadOnion

    MadOnion Folding Member

    É suposto teres o fgetc dentro do ciclo, senão da maneira como tens isso feito só vais ler 2 caracteres do ficheiro e pronto.
    A ideia é fazeres algo do genero:
    Código:
    ...
    int c = 0;
    while ( (c = fgetc(nc)) != EOF)
        //fazes os tais ifs, e o switch que o Baderous recomendou
    ...
    
    Desta maneira consegues ler todos os caracteres do ficheiros até chegares ao final do ficheiro(EOF aka End Of File).
     
  9. dreamerboy

    dreamerboy Power Member

    Feito à pressa

    Depois diz se é isso.
     
  10. bakardi

    bakardi Folding Member

    entretanto ja consegui fazer algumas coisas como queria.....so que ha certas coisas que eu gostaria de por mais correcto.....por exemplo se ele encontra o caracter "N" cria um objecto......mas se ele encontra por exemplo "N o" ou "No" apresenta um erro pois nessa na mesma linha do N do T etc nao pode haver outros caracteres como resolvo isto? eu tou a fazer assim...

    if(strcmp(objecto,"N\n")==0){ etc } so que assim ele nao me identifica erros como aqueles que referi aqui em cima.

    outra coisa....por exemplo....ele criou o objecto(N) e esse objecto tem x vertices....o numero de coordenadas para o x e para o y tem de ser igual ao numero de vertices....como posso fazer isto?

    cumps
     

Partilhar esta Página