Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 39
  1. #1

    [c]Strani simboli con cout

    #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è?

  2. #2
    la stinga passata verso cout devo finire con '\0'
    quindi
    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.
    p.s. quando inizializzi la stringa il compilatore aggiunge da solo \0.

  3. #3
    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.
    Ma se dichiaro l'array di 13(o anche +) senza inserire \0 non mi escono + quei simboli.
    Significa che si inserisce automaticamente fine stringa?

  4. #4
    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?
    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?

  5. #5
    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?
    Scusa non avevo fatto caso al p.s.:quipy:

    Cmq funziona grazie!

  6. #6
    errata corrige:
    se la dichiari cosi' non mette il \0:
    prova a fare
    codice:
    #include <iostream.h> 
    void main() 
    { 
    char testo[12]="CIAO A TUTTI\0"; 
    cout<<testo; 
    getchar(); 
    }
    e vedrai che dovrebbe funzionare.

  7. #7
    Vabene grazie.

  8. #8
    Originariamente inviato da kentaromiura
    errata corrige:
    se la dichiari cosi' non mette il \0:
    prova a fare
    codice:
    #include <iostream.h> 
    void main() 
    { 
    char testo[12]="CIAO A TUTTI\0"; 
    cout<<testo; 
    getchar(); 
    }
    e vedrai che dovrebbe funzionare.
    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";

  9. #9
    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";
    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].

  10. #10
    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].
    Stai inventando nuove regole del C?
    Quello che hai detto è tutto sbagliato:

    codice:
    char s[5] = "ciao";
    'c','i','a','o','\0'
    0 1 2 3 4

    Studia meglio

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.