Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Dubbio stupido

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    9

    Dubbio stupido

    Ragazzi, ho un dubbio che non riesco proprio a chiarire. Risolvendo un certo programma avevo bisogno di copiare due caratteri di una stringa su una dimensione minore. Semplificando
    codice:
    #include <stdio.h>
    #include <strings.h>
    void main() {
    char str1[10]="amico";
    char di[2];
    
    di[0]=str1[0];
    di[1]=str1[1];
    printf("%s", di);
    }
    Perché stampo amamico?

    Non dovrebbe stampare solo am? Pensavo fosse un errore di logica dato che avevo inserito questo caso semplice all'interno di cicli for, ma ora capisco che è un errore di base, base.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Perchè la stringa che vai a stampare non contiene il terminatore \0.
    "di" dovrebbe essere di dimensione 3: i primi due contengono i caratteri che ti servono, il terzo il terminatore di stringa.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di AtoXx
    Registrato dal
    Nov 2007
    Messaggi
    119
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Perchè la stringa che vai a stampare non contiene il terminatore \0.
    "di" dovrebbe essere di dimensione 3: i primi due contengono i caratteri che ti servono, il terzo il terminatore di stringa.


    Ciao.

    Quoto, è quello l'errore

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    9
    Ok capito l'errore.
    Ma allora perché va a stampare tutt'altra cosa?

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Visualizza quello che trova in memoria fino al carattere \0

    Quindi visualizza

    am

    e poi

    amico
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.