Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: [C] file

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337

    [C] file

    se ho un file con scritto dentro delle parole.

    esempio:
    cane
    casa
    topo
    gatto
    |

    è voglio leggerle, con fgets, se l'utente dopo gatto preme enter e quindi va a capo (ho scritto | per intenderci) , senza scrivere niente come posso fare a scartare quel carattere?

    ho provato con strcmp(vett, '')!=0 ma non funziona grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Non si e' capito qual e' il problema ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    in pratica io voglio leggere un file contenente delle stringhe e determinanrne la lunghezza tutto funziona a meno che l'utente nel file dopo aver digitato l'ultima parola del file prema enter

    esempio

    cane(enter)
    topo(enter)
    formaggio(enter)
    casa

    nel caso precedente funziona


    in questo caso:

    cane(enter)
    topo(enter)
    formaggio(enter)
    casa(enter)
    (poisione cursore a inizio nuova riga)


    avendo l'utente premuto enter sull'ultima parola c'è un problema , ovvero mi conta l'ultima riga vuota in realtà come una riga di un carattere.

    spero di essermi spiegato meglio

    grazie

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    E il codice che usi qual e'?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    codice:
    char vett[81];
    int lunghezza
    
    while(!feof(fp)){
    
    fgets(vett, 81, fp);
    lunghezza=strlen(vett);
    
    printf("%s--->%d", vett, lunghezza);
    }
    questo è il codice , non ho messo le parti inutili, qui conto anche i \n ma non è un problema, il problema è del ritorno a capo sull'utlima parola che mi viene contato come una parola di un carattere

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    A me visualizza correttamente i dati ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    ho fatto un esempio sbagliato mea culpa mea maxima culpa.

    in pratica cosa succede nel mio vero codice che io faccio

    un


    while(!feof(fp)){

    prendo sctringa
    misuro la lunghezza
    metto la lunghezza in un secondo file
    }

    il problema è che se l'utente digita enter dopo l'ultima parola non mi risulta la fine del file e mi conta due volte la stessa stirnga

    cane
    topo
    gatto
    |vuoto|


    mi conta due volte gatto, comeposso fare?

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    codice:
    #include <stdio.h>
    #include <string.h>
    void main(){
    FILE *fp;
    fp=fopen("prova.txt" , "r");
    
    char vett[81];
    int lunghezza;
    
    while(!feof(fp)){
    
    fgets(vett, 81, fp);
    lunghezza=strlen(vett);
    
    printf("%s--->%d\n\n", vett, lunghezza);
    }
    	
    	}

    prova questo codice, metti enter dopo l'ultima parola del file, stampa due volte l'ultima parola, solo che non posso mettere un controllo sulla parola precendere perchè se l'utente mette due parole uguali



    codice:
    a
    ab(enter)
    abc(enter)
    1234(enter)
    12345(enter)
    mi stampa due volte 12345

    il punto è che non so se l'utente mi passa un file con uno spazio bianco alla fine o no

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    ho trovato la soluzione, ho messo un controllo sul valore ritornato da fgets, grazie oregon

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Utilizza il codice

    codice:
    while(1)
    {
      if(fgets(vett, 81, fp)!=vett) break;
      lunghezza=strlen(vett);
      printf("%s--->%d\n", vett, lunghezza);
    }
    EDIT: oops ... forse avevi trovato la soluzione da solo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.