#include <iostream.h>
void main()
{
char testo[12]="CIAO A TUTTI";
cout<<testo;
getchar();
}
Se eseguo questo programma, esce scritto
CIAO A TUTTI© ↨
Se incremento l'array, mi esce scritto quello che ho dichiarato.
Perchè?
#include <iostream.h>
void main()
{
char testo[12]="CIAO A TUTTI";
cout<<testo;
getchar();
}
Se eseguo questo programma, esce scritto
CIAO A TUTTI© ↨
Se incremento l'array, mi esce scritto quello che ho dichiarato.
Perchè?
la stinga passata verso cout devo finire con '\0'
quindi
p.s. quando inizializzi la stringa il compilatore aggiunge da solo \0.codice:CIAO =4 caratteri = 1 carattere a= 1 " = 1 " TUTTI= 5 caratteri \0= 1 carattere totale=13 caratteri.. devi quindi dichiarare l' array di 13.
Ma se dichiaro l'array di 13(o anche +) senza inserire \0 non mi escono + quei simboli.Originariamente inviato da kentaromiura
la stinga passata verso cout devo finire con '\0'
quindi
CIAO =4 caratteri
= 1 carattere
a= 1 "
= 1 "
TUTTI= 5 caratteri
\0= 1 carattere
totale=13 caratteri..
devi quindi dichiarare l' array di 13.
Significa che si inserisce automaticamente fine stringa?
ho gia' risposto..Originariamente inviato da matrics21
Ma se dichiaro l'array di 13(o anche +) senza inserire \0 non mi escono + quei simboli.
Significa che si inserisce automaticamente fine stringa?
comunque la stringa automaticamente finisce con \0..
solo che in teoria visto che parte da 0 il \0 dovrebbe andare in
testo[12]..
forse c'e' un altro errore..
comunque se dichiari stringa di 13 funziona, vero?
Scusa non avevo fatto caso al p.s.:quipy:Originariamente inviato da kentaromiura
ho gia' risposto..
comunque la stringa automaticamente finisce con \0..
solo che in teoria visto che parte da 0 il \0 dovrebbe andare in
testo[12]..
forse c'e' un altro errore..
comunque se dichiari stringa di 13 funziona, vero?
Cmq funziona grazie!
errata corrige:
se la dichiari cosi' non mette il \0:
prova a fare
e vedrai che dovrebbe funzionare.codice:#include <iostream.h> void main() { char testo[12]="CIAO A TUTTI\0"; cout<<testo; getchar(); }
Vabene grazie.
Infatti non funziona perchè l'array deve contenere 13 e non 12 caratteri.Originariamente inviato da kentaromiura
errata corrige:
se la dichiari cosi' non mette il \0:
prova a fare
e vedrai che dovrebbe funzionare.codice:#include <iostream.h> void main() { char testo[12]="CIAO A TUTTI\0"; cout<<testo; getchar(); }
Comunque la risposta è che il C++ vede le stringhe come array di caratteri che terminano con il carattere '\0'.
Se non esiste quel carattere, allora la cout continua a scrivere spazzatura.
"ciao" contiene 5 caratteri perchè c'è anche il '\0', quindi la sintassi da usare è:
codice:char s[5] = "ciao";
michele
michele.facchin@virgilio.it
Server:irc.azzurra.org | /join #c
ma funziona anche char s[4]="ciao\0"Originariamente inviato da Michele Facchin
Infatti non funziona perchè l'array deve contenere 13 e non 12 caratteri.
Comunque la risposta è che il C++ vede le stringhe come array di caratteri che terminano con il carattere '\0'.
Se non esiste quel carattere, allora la cout continua a scrivere spazzatura.
"ciao" contiene 5 caratteri perchè c'è anche il '\0', quindi la sintassi da usare è:
codice:char s[5] = "ciao";
poiche' parte da s[0]
codice:s[0, 1, 2, 3, 4 ] 'c','i','a','o','\0' se non lo assegni lui non lo mette di default.. ma se lo assegni funziona perche il c ti permette di usare fino al carattere s[4].
Stai inventando nuove regole del C?Originariamente inviato da kentaromiura
ma funziona anche char s[4]="ciao\0"
poiche' parte da s[0]
codice:s[0, 1, 2, 3, 4 ] 'c','i','a','o','\0' se non lo assegni lui non lo mette di default.. ma se lo assegni funziona perche il c ti permette di usare fino al carattere s[4].
Quello che hai detto è tutto sbagliato:
'c','i','a','o','\0'codice:char s[5] = "ciao";
0 1 2 3 4
Studia meglio
michele
michele.facchin@virgilio.it
Server:irc.azzurra.org | /join #c