Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Gipple
    Registrato dal
    Mar 2009
    Messaggi
    41

    [C] fscanf non funziona come dovrebbe

    Buongiorno a tutti.
    Probabilmente la mia è una domanda stupida, ma ho comunque necessità di porla ... io ho un file .csv (Manco sapevo cosa fosse) in cui i valori all'interno sono separati da punto e virgola, io devo manipolare questo file "alla C" cioè dichiarando un puntatore ad un file e utilizzando fopen (ma questo è di contorno direi).
    Quando tento però di "raccattare" i valori riga per riga del file, utilizzando fscanf in questo modo:
    codice:
    fscanf (pFile, "%d;%s;%s;", &num, nome,cognome)
    (dove nome e cognome sono array di char, mentre num è un int) il programma o mi crasha senza restituire nulla oppure semplicemente non mi restituisce nulla ...perchè? Ho il sospetto che sia a causa del fatto che %s voglia uno spazio alla fine (se non ho mal interpretato la reference) però non ne sono sicuro ... come posso ovviare al problema?
    Attualmente sto utilizzando fgets, ma prendendomi tutta la riga è un sistema a) poco elegante b) che mi costringe a fare troppe operazioni successivamente ...

    Ringrazio tutti in anticipo, ciao!

  2. #2
    Prova a non mettere i punti e virgola

  3. #3
    Utente di HTML.it L'avatar di Gipple
    Registrato dal
    Mar 2009
    Messaggi
    41
    Tralasciando che, da quel che ne so, senza mettere i punti e virgola (o le virgole utilizzando la notazione anglosassone) non viene codificato come .csv "standard" e il sistema lo vede come file di testo semplice,ci ho provato in ogni comunque, ma non è cambiato nulla.

    In ogni caso il file "mi è dato così" e lo devo modificare DOPO averlo letto, non PRIMA sostituendo i delimitatori ...

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    %s continua a leggere finché non trova qualche carattere di whitespace (in generale uno spazio o un \n), se vuoi che si fermi al ; usa uno scanset, %[^;]
    effeffe

  5. #5
    Utente di HTML.it L'avatar di Gipple
    Registrato dal
    Mar 2009
    Messaggi
    41
    Ci avevo pensato, ma non avevo ben capito come funzionava lo scanset (dato che non l'ho mai usato ...) proverò ... grazie mille ^_^

  6. #6
    codice:
    fscanf (pFile, "%d", &num)
    fscanf (pFile, "\t%s", nome)
    fscanf (pFile, "\t%s",cognome)
    Prova così
    visitate www.linkutility.it !!! Il sito per ogni necessità

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 © 2025 vBulletin Solutions, Inc. All rights reserved.