[Gulli] C-onoscete il C?

Fabrizio Carrai fabrizio.carrai@gmail.com
Mer 12 Giu 2013 19:22:23 CEST


Ti potrei consigliare di

a) leggere la riga con una fgets
b) usare la sscanf al posto della fscanf

come in [1]. Qui è più semplice essere sicuri di cosa si va a processare.

Ma principalmente ti consiglio di considerare il valore di ritorno della
fscanf() [2]: se è diverso dal numero di campi che ti aspetti fai un break
ed esci dal loop.

Fabrizio

[1]
http://stackoverflow.com/questions/861793/trouble-reading-a-line-using-fscanf
[2] http://it.wikipedia.org/wiki/Scanf


Il giorno 12 giugno 2013 15:43, Alessandro Marzini <
alessandro.marzini@gmail.com> ha scritto:

> Mettiamo alla prova i gullisti programmatori di C
>
> devo scrivere un piccolo programma che mi prenda un file di testo cosi
> fatto:
>
> 111792;AFGHANISTAN;Areeba Mobile;93;77
> 125426;AFGHANISTAN;AT Mobile;93;75,78,89
> 124225;AFGHANISTAN;AWCC Mobile;93;70
> 123768;AFGHANISTAN;Etisalat Mobile;93;78
> 2;AFGHANISTAN;Other;93;
> 111793;AFGHANISTAN;Roshan Mobile;93;72,79
> 129491;ALBANIA;OLO;355;4249,4250,4251,4252
>
> e devo riorganizzarlo cosi:
>
> 111792;AFGHANISTAN;Areeba Mobile;9377
> 125426;AFGHANISTAN;AT Mobile;9375
> 125426;AFGHANISTAN;AT Mobile;9378
> 125426;AFGHANISTAN;AT Mobile;9389
> 124225;AFGHANISTAN;AWCC Mobile;9370
> 123768;AFGHANISTAN;Etisalat Mobile;9378
> 2;AFGHANISTAN;Other;93;
> 111793;AFGHANISTAN;Roshan Mobile;9372
> 111793;AFGHANISTAN;Roshan Mobile;9379
> 129491;ALBANIA;OLO;3554249
> 129491;ALBANIA;OLO;3554250
> 129491;ALBANIA;OLO;3554251
> 129491;ALBANIA;OLO;3554252
>
> In pratica e' un listino prezzi dove pero' mi hanno messo i prefissi per
> una certa destinazione tutti insieme in una cella separati da virgola,
> invece io devo averi riga per riga come scritto.
>
> Il mio problema è che se uso la fscanf, l'ultimo ciclo mi prende anche il
> valore della riga successiva, cioe' non riesco a dire alla fscanf di
> fermarsi quando arriva a fine riga.
>
> Estratto del codice:
>
> http://codepad.org/YaolFNjB
>
> Se qualcuno ha voglia..
>
> Grazie
>
> --
> Mailing list info: http://lists.linux.it/listinfo/gulli
> Pagina web del GULLI: www.livorno.linux.it
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.linux.it/pipermail/gulli/attachments/20130612/9c12a848/attachment.html>


Maggiori informazioni sulla lista Gulli