Newsgroup: it.comp.lang.c
Titolo: aiuto: stringa che mi restituisce niente....

Stavo facendo esercizi con variabili decimali, chat e ottali.
Poi volevo stampare in una stringa tutti i caratteri in questione, ma 
qualcosa qui sbaglio. Qualcuno gentilmente puņ aiutarmi?
Grazie
Nicola
// visualizzazione dei caratteri
#include <stdio.h>
int caratteri[100], x;
main()
{
for (x=0; x<100; x++)
	{
	caratteri[x]=x ;
	printf ("decimale: %d \tottale: %o \tascii : %c\n", x,x,x);
	}
printf ("\n\ntutta la stringa: %s \n", caratteri);
}

 qualcosa qui sbaglio. Qualcuno gentilmente può aiutarmi?
caratteri[0]=0... che e' il terminatore di stringa ...
-- 
"Lo sa che io ho perduto due figli?"
"Signora, lei e' una donna piuttosto distratta"

 qualcosa qui sbaglio. Qualcuno gentilmente puņ aiutarmi?
intanto, per poterla stampare come una stringa
la variabile caratteri non puo' essere definita
come un vettore di interi, ma deve essere definita
come un vettore di caratteri, quindi tipo
char caratteri[100];
poi in c le stringhe sono rappresentate come
sequenze di caratteri terminate dal carattere
che vale zero.
Quindi, per fare quello che volevi fare
dovresti definire caratteri un carattere piu'
lungo, quindi
char caratteri[101];
e dopo o prima del ciclo mettere uno zero
nella posizione successiva all'ultima
significativa, quindi in questo caso
caratteri[100]=0;
poi tieni conto che non e' detto che i caratteri corrispondenti
a valori bassi siano stampabili.
ciao, e ripassati le stringhe ....
e.

 qualcosa qui sbaglio. Qualcuno gentilmente puņ aiutarmi?
a, caro lucchese, ho visto che hai anche commesso un altro
errore: nel ciclo inizializzi a 0 il primo carattere,
quindi di fatto rendi caratteri equivalente ad una
stringa vuota... non risparmiare: comprati un buon manuale!
ciao,

 ciao,
Grazie Caro Estintore.
Non ho risparmiato (...anche se i lucchesi sono famosi per farlo): ho 
già comprato un buon manuale di Bellini e Guidi "Linguaggio C".
Semplicenete sono duro di cervice..... e alle prime armi in materia di 
programmazione.
Ciao grazie ancora
Nicola

 
Non mi č chiarissimo quello che vuoi fare, ma il codice che hai postato
mostra che hai un po' di confusione.
quello che ottieni col tuo codice č un array di 100 interi con i seguenti
valori all'interno. (Supponendo che un intero sulla tua architettura
occupi 4 bytes, big endian).
caratteri[0]  caratteri[1]  caratteri[2]  caratteri[3]  caratteri[4]  ..
00 00 00 00 - 01 00 00 00 - 02 00 00 00 - 03 00 00 00 - 04 00 00 00 - ..
Dopodiché, alla fine, chiami la tua printf cosě:
printf ("\n\ntutta la stringa: %s \n", caratteri);
Poiché "caratteri" č un array, scrivere "caratteri" equivale a scrivere
"&caratteri[0]", quindi stai dicendo a printf di scrivere una stringa il
cui primo byte sia il primo byte di caratteri[0].
Ora, se vedi il disegnino di prima noti che questo primo primo byte č
0x00. 
Sai che ogni stringa termina con un carattere che ne identifica la
fine, e questo carattere č proprio il carattere 0x00. Quindi se volessi
intendere una stringa che comincia dal primo byte di caratteri[0] ottieni
una stringa vuota, infatti il primo carattere č il terminatore.
Ti ho raccontato tutto questo perché non ho capito cosa volevi fare e
quindi non so come aiutarti, perň ti ho spiegato perché la tua stringa
"ti restituisce niente".
Per altro con i warnings abilitati in compilazione forse ti potresti
accorgere che un '%s' su *printf vuole un array di char e non uno di
interi.
Ciao
Matic


  Gentilissimo. Grazie. Provo quello che hai detto.