Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    10

    [linguaggio C] - problema strano con fscanf

    salve.. ho problemi con una fscanf che restituisce inspiegabilmente valore 0 solo quando legge dalla seconda riga del file in poi..

    esempio di file:

    145451 Bianchi Laura 05ASO 20
    143454 Rossi Alberto 06ACF 29
    151978 Verdi Giovanni 07AXL 18
    143454 Rossi Alberto 05ASO 28
    145451 Bianchi Laura 07AXM 23
    145451 Bianchi Laura 07AXM 26

    e questo è il mio codice:

    while(fscanf(fp,"%ld%s%s%s%d",&matr,cognome,nome,c od,&voto) != EOF) {
    ....
    printf("%ld%s%s%s%d\n",matr,cognome,nome,cod,voto) ;
    ....
    }

    legge la prima riga.. dopodichè restituisce sempre 0 alla fscanf e non capisco perchè.

    per curiosità ho provato a fare questo:

    fscanf(fp,"%ld%s%s%s%d",&matr,cognome,nome,cod,&vo to);
    fscanf(fp,"%ld%s%s%s%d",&matr,cognome,nome,cod,&vo to);
    fscanf(fp,"%ld%s%s%s%d",&matr,cognome,nome,cod,&vo to);
    fscanf(fp,"%ld%s%s%s%d",&matr,cognome,nome,cod,&vo to);
    fscanf(fp,"%ld%s%s%s%d",&matr,cognome,nome,cod,&vo to);
    fscanf(fp,"%ld%s%s%s%d",&matr,cognome,nome,cod,&vo to);

    in questo modo non mi dà nessun problema e legge tutte le righe.. è ovvio che però cosi non mi serve a niente nel programma..


    non so piu dove sbattere la testa e magari è un problema da niente ma nn lo vedo..

    fatemi sapere.. grazie!
    ciao

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ho provato e il codice funziona regolarmente.

    Probabilmente il problema e' in un'altra parte del codice che sta nel ciclo e che non hai mostrato.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di KrOW
    Registrato dal
    Feb 2009
    Messaggi
    281
    Ciao... Sembra strano che non funziiona l' ho pure provato e a me funziona;
    Ho un mezzo sospetto... Puoi postare tutto il codice ???

  4. #4
    Utente di HTML.it L'avatar di frznn
    Registrato dal
    Apr 2008
    Messaggi
    108
    (sto un po' arruginito col C...)

    se aggiungessi il \n alla fine del format della scanf?

    cioè:

    fscanf(fp,"%ld%s%s%s%d\n",&matr,cognome,nome,cod,& voto) != EOF

    fscanf torna 0 se trova caratteri da leggere ma il match con il formato non va a buon fine...
    siccome come ultimo match leggi un intero il \n viene ignorato, quindi rimane come carattere pendente che alla successiva scansione viene associato al &ld , fallendo...

    magari sto dicendo cavolate...anche perchè questo non spiega perchè agli altri funziona XD

    ma alla fine tentar non costa nulla
    *** Rock n' Roll ain't noise pollution ***

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    10
    non credo sia altrove il problema perchè ignorando tutto il resto e facendo girare solo questa parte che vi ho scritto gia si blocca..

    il fatto è che sto usando turboC cm compilatore perchè codeblocks mi dava problemi.. puo essere un motivo il fatto che turboC sia un po vecchio?


    a sto proposito vi chiedo un'altra cosa.. nn programmo da parecchio.. usando codeblocks mi dà un errore di segmentazione quando gli scrivo il nome del file da aprire..
    cè un percorso particolare dove salvare il file di ingresso?

  6. #6
    Utente di HTML.it L'avatar di frznn
    Registrato dal
    Apr 2008
    Messaggi
    108
    ma hai provato quello che ho scritto?
    *** Rock n' Roll ain't noise pollution ***

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    10
    si ho provato ma nn funziona.. e poi cmq \n non funziona sulla scanf ma sulla printf..

  8. #8
    Utente di HTML.it L'avatar di frznn
    Registrato dal
    Apr 2008
    Messaggi
    108
    prova con un %s o un %c a vuoto (non assegnato a una variabile)

    codice:
    fscanf(fp,"%ld%s%s%s%d%s",&matr,cognome,nome,cod,&voto) != EOF
    se non sbaglio non dovrebbe dare errori di compilazione
    *** Rock n' Roll ain't noise pollution ***

  9. #9
    Utente di HTML.it L'avatar di KrOW
    Registrato dal
    Feb 2009
    Messaggi
    281
    Personalmente non ho mai usato turboc e non credo che quest' ultimo sia il problema. Prova a postare interamente il codice. . . Per quando riguarda codeblock il file lo puoi salvare ovunque (ovviamente devi conoscere il path assoluto o quello relativo). . . Come gli passi il path???

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    10
    in genere il file lo metto nella stessa cartella del progetto e del file.c

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.