View Full Version : [C] Salvataggio dati formattati.
salvodel
16-01-2008, 16:50
Salve a tutti vorrei salvare dei dati su file ma in modo da mantenere una certa formattazione. Al momento faccio cosi:fprintf(fs,"%.3LE\t",dat[t]);
Ma giustamente l'uscita è questa:1.297E-001 -2.965E-002 -8.704E-001
4.136E-001 -7.369E-001 -2.648E-001
4.856E-002 7.110E-001 2.115E-001
4.092E-001 -1.995E-001 -3.523E-001
-6.730E-003 -4.796E-001 2.387E-001
Se volessi allineare in base al punto in modo tale che indipendentemente dal segno presentino tutti la stessa lunghezza come devo fare?
Grazie a tutti.
Al punto non puoi allineare se non lavorando sulla stringa risultate.
Prova così:
fprintf(fs,"%11.3LE\t",dat[t]);
salvodel
17-01-2008, 11:07
Al punto non puoi allineare se non lavorando sulla stringa risultate.
Prova così:
fprintf(fs,"%11.3LE\t",dat[t]);
Prima di tutto grazie mille cincio come al solito pero questa volta la soluzione proposta non ha fruttato. Anch'io speravo che l'undici indicasse il numero di "spazzi" della parte intera invece non è cosi. Infatti utilizzando la notazione scientifica ho sempre un intero piu il segno e non mi vede gli undici "spazzi".
Un'altra soluzione a cui avevo pensato era uno stupido if(non se la prenda a male il sig. if, lo stupido era riferito all'idea partorita da me)
if(dat[t]>0)
fprintf(fs,"+%.3LE\t",dat[t]);
else
fprintf(fs,"%.3LE\t",dat[t]);
edit
ho messo un discutibile segno + invece dello spazio come avevo postato prima. In fase di lettura non sembra dargli problema....ne potrei riscontrare?
Grazie
11 indica gli spazi totali assegnati per la stampa, non il numero di interi prima della virgola
salvodel
17-01-2008, 11:28
11 indica gli spazi totali assegnati per la stampa, non il numero di interi prima della virgola
Grazie per il chiarimento ma il risultato è questo:
con 11
1.2954E-001 -2.9817E-002 -8.6947E-001
4.1136E-001 -7.3921E-001 -2.4586E-001
5.5152E-002 7.1753E-001 1.5082E-001
con if
+1.2957E-001 -2.9789E-002 -8.6962E-001
+4.1298E-001 -7.3759E-001 -2.5951E-001
+5.5915E-002 +7.1829E-001 +1.4164E-001
cosa mi consigli di fare?
Grazie
Sinceramente non mi ricordo se si potesse assegnare un allineamento al testo all'interno degli spazi riservati per la stampa.
Comunque la seconda direi che vada bene. Hai provato a stampare numeri maggiori di 1 ?
limpid-sky
17-01-2008, 14:55
non so se può essere utile.
http://www.cplusplus.com/reference/iostream/manipulators/setw.html
all'università in un paio di esercizi sulle matrici con questa istruzione si riusciva ad allineare i caratteri in colonna. Se trovo gli esempi magari li posto.
non so se può essere utile.
http://www.cplusplus.com/reference/iostream/manipulators/setw.html
all'università in un paio di esercizi sulle matrici con questa istruzione si riusciva ad allineare i caratteri in colonna. Se trovo gli esempi magari li posto.
E' C++ ;)
limpid-sky
17-01-2008, 15:04
E' C++ ;)
:doh: scusate
salvodel
17-01-2008, 15:46
non so se può essere utile.
http://www.cplusplus.com/reference/iostream/manipulators/setw.html
all'università in un paio di esercizi sulle matrici con questa istruzione si riusciva ad allineare i caratteri in colonna. Se trovo gli esempi magari li posto.
Mi potresti mandare lo stesso gli esempi. Al massimo faccio un secondo programmino in C++ per la formattazione dell'output del C.
Grazie
Cos'ha che non va bene l'ultimo che hai fatto con l'if ?
salvodel
17-01-2008, 17:50
Cos'ha che non va bene l'ultimo che hai fatto con l'if ?
Con if va bene, giusto per vedere se ci sono soluzioni migliori.
Una domanda forse assurda: è possibile stampare a schermo un riga di colore diverso dal bianco? Se ho detto qualcosa di assurdo che si scontra con tutta la storia dell'informatica del C non mi lapidare:D
Ciao
Sì, ma ti devi legare a delle librerie che non sono standard. Cerca la libreria ncurses.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.