Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [C] problema fscanf

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2015
    Messaggi
    14

    [C] problema fscanf

    Salve ragazzi,

    ho un problema con l'utilizzo dello fscanf in particolare con la stringa di formattazione.
    ho un file in cui i dati sono organizzati come segue:

    Pietro Savorgnan di Brazza’; Via del castello; 33030 Brazzacco; UD
    Giacomo Leopardi; Via Ginestra 123/A; 62019 Recanati; AN
    Galileo Galilei; Campo dei miracoli 1; 56100 Pisa; PI
    Carlo Goldoni; Fondamenta Polonese 2A; 30100 Venezia; VE
    Marco Polo; Calle Goldoni 3; 30100 Venezia; VE

    attraverso fscanf vorrei leggere ogni stringa fino al punto e virgola (compreso gli spazi) e inserirla in un array di char e poi porre tutto in una struttura (quindi voglio usare come separatore il ' ; ').

    ho scritto quindi cosi:

    while(fscanf(fin,"%s; %s; %s; %s",nome,indirizzo,capECit,provincia)!= EOF) ....


    il while lo uso per leggere tutto il file fino al carattere di fine file.

    cosi com'è scritto non funziona assolutamente nulla. funziona nel caso in cui sostituisco gli spazi nelle stringhe con underscore e sostituisco i punti e virgola con semplici spazi... come posso risolvere il problema?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Utilizza la fgets al posto della scanf e leggi tutta la riga in una sola stringa.

    In seguito, separa le varie parti usando il ; come separatore (magari con la strtok)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2015
    Messaggi
    14
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Utilizza la fgets al posto della scanf e leggi tutta la riga in una sola stringa.

    In seguito, separa le varie parti usando il ; come separatore (magari con la strtok)
    Grazie in questo modo ho risolto però andando a eliminare gli spazi nel file di fianco alle virgolette siccome questi poi vengono compresi nelle stringhe.
    ho provato a usare strtok(str, "; ") però mi vede lo spazio e virgolette come due separatori distinti
    Ultima modifica di Xert; 04-11-2016 a 11:52

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Puoi eliminare gli spazi iniziali con qualcosa del tipo
    codice:
    int k = strspn(str, " \t");
    memmove(str, str+k, strlen(str+k)+1);
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2015
    Messaggi
    14
    Cosi non ci sono piu problemi grazie

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.