Newsgroup: it.comp.lang.c
Titolo: Creare una tabella su file

Ciao a tutti, ho bisogno di creare una specie di tabella su file ma non
riesco ad allineare i dati:
vorrei ottenere qualcosa del tipo:
   Ciclo                             A                                     B
      1                                10
2
      2                                34
12
       .                                 .
.
      10                              25
15
Non ho  difficoltà a scrivere su file ma non riesco a far scrivere dove
voglio io, tipicamente mi succede che quando il numero sotto l'etichetta
"Ciclo" cresce in numero di cifre, i numeri sotto le etichette A e B vengono
spostati (questo perchè io separo le cifre su una stessa riga con il comando
fprintf("          "); ). Quel che ottengo sostanzialmente è:
Ciclo                             A                                     B
      1                                10
2
      2                                34
12
       .                                 .
.
      10                                25
15
Sapreste indicarmi una funzione che scriva sempre nella medesima posizione
in righe differenti?
Grazie a tutti.
Giuseppe

Giuseppe
inserisci un tab ("\t") tra un dato e l'altro e poi visualizza il file
con un programma che li gestisce e che magari ti permette di
specificarne la larghezza
ciao
Andrea
- - - - 
http://space.tin.it/io/andrea.fa

 ha scritto nel messaggio
news:r8g9vuobria2cfv89...@4ax.com...

------------------------------------------------------------------
Grazie per il tuo consiglio, il problema è che to lavorando con dati
"particolare", sto usando la libreria gmp.h che permette il calcolo a
precisione arbitraria. iIdati nelle varie celle sono di tipo mpz_t  (io li
chiamo super integer, nel senso che sono integer limitati solo dalla
capienza dell'HD). Penso pertanto che difficilmente un programma possa
gestire questi tipi di dati.
Comunque proverò, grazie ancora.
Giuseppe

 Giuseppe
Se vuoi allineare dei dati devi per lo meno sapere la dimensione massima
che questi possono assumere.
Se non ti e' nota a priori potresti registrarli in un file "alla rinfusa"
tipo
nCiclo ValA valB
1 10 10
..
500 10000000000000 1
..
10000 50 500000000
..
10000000000000000 1 1
e poi postprocessare il file trovando l'ingombro massimo in numero di
caratteri del valore piu' grande dei vari campi e allineando i dati di
conseguenza.
C:\>iao Angelo
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

------------------------------------------
Posso sicuramente conoscere la lunghezza, il problema è che non riesco ad
effettuare gli allineamenti in funzione di essa.
ciclo#                           A
10000<------------->5000
                  d_1
100<---------------->300
                   d_2
20000                         321
<-------------------->
              d_3
200                             432
<--------------------->
              d_3
Mentre d_1 e d_2 sono variabili, d_3 rimane fisso (cioè la distanza
dall'origine), ecco, vorrei fare in modo di scrivere il primo dato e poi  il
secondo dato a d_3 dall'inizio della riga.
Qual era il tuo suggerimento rispetto alla lunghezza dei numeri?
Grazie mille.
Giuseppe

 Giuseppe
Mi spediresti un file di testo con quello che vorresti ottenere e quello
che ottieni? Da Newsland non e' che riesco a capirci molto (la
formattazione e' piu' o meno casuale). L'indirizzo e' buono.


 ha scritto
fatti una funzione che converte i tuoi dati in stringa (per esempio
leggendoli dalla mem) e poi usa fprintf().
Ph.

 riesco ad allineare i dati:
fprintf(fout,"%6d\t%8d\n",variabile_int_a,variabile_int_b);
se sono float o double:
%8.2f e %10.2f
dove dopo il punto metti la precisione che vuoi ottenere.
Ma forse non ho capito il tuo problema.
Tommy