SALVARE DATI IN UN FILE

emina90-votailprof
Salve a tutti...ho un dubbio per quanto riguarda i file nella programmazione in C.
Non riesco a salvare nessun dato con lo spazio.Cerco di spiegarmi meglio..
se io provo a salvare la stringa "CIAO A TUTTI", quando apro il file leggo solo "CIAO" se invece scrivo tutto attaccato,senza spazi mi salva l'intera frase..
Non capisco a cosa sia dovuto..scusate la domanda stupida, ma non ho mai programmato prima di questo corso ed i file li abbiamo fatti in una sola lezione..molto in fretta..

ringrazio già per gli eventuali aiuti :)

Risposte
apatriarca
Senza il codice è impossibile risponderti, ma gli innumerevoli programmi scritti in C in grado di gestire file dovrebbero dimostrarti che il problema non è nella libreria ma nell'uso che ne fai. Qualsiasi funzione che scrive stringhe su file è in grado di fare quello che chiedi, quindi credo che il problema sia da qualche altra parte.

Stai leggendo la tua stringa usando la funzione scanf? (:evil: Odio profondamente tutti i professori e le guide che insegnano questa funzione deprecata e sconsigliata da qualsiasi guida di stile..) Se questo fosse il caso, allora sostituiscila con fgets e vedrai che tutti i tuoi problemi saranno magicamente risolti.

Rggb1
"apatriarca":
(:evil: Odio profondamente tutti i professori e le guide che insegnano questa funzione deprecata e sconsigliata da qualsiasi guida di stile..)

:-D :-D :-D

Rassegnati, purtroppo continuerà. Forse essi ignorano a cosa servono:
NAME
       scanf, fscanf, sscanf, vscanf, vsscanf, vfscanf - input format conversion
e le usano quando hanno bisogno di
NAME
       fgetc, fgets, getc, getchar, gets, ungetc - input of characters and strings


PS. Addirittura "deprecata"? Quali linee di stile, intendi per l'input da tastiera?

apatriarca
"Rggb":
PS. Addirittura "deprecata"? Quali linee di stile, intendi per l'input da tastiera?

Forse ho un po' esagerato a definirla deprecata (anche se per Visual C++ lo è..) in quanto è ancora presente nello standard e non sembra verrà eliminata in qualche versione futura (neanche del C++ a quanto ne so). In effetti è la gets la funzione che più di ogni altra dovrebbe essere eliminata, ma per fortuna non viene insegnata.. :-D

In un caso come questo, in cui si deve leggere una riga di testo dalla console, allora il metodo migliore è quello di usare fgets. Ma spesso la riga che viene letta da stdin deve essere interpretata e non solo letta. La lettura in questo caso è meglio farla in due passaggi. Prima si ottiene l'input da tastiera e lo si memorizza in un buffer e in seguito si effettua il parsing. Il parsing può essere anche effettuato usando sscanf. Questa ultima funzione ha infatti il vantaggio di lavorare in un ambiente (una stringa) più controllato e non ha quindi molti dei difetti della versione per console.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.