Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Chiarimenti sui vettori di caratteri

    Ciao ciao,
    avrei bisogno di qualche delucidazione come sopra. In un esempio del mio testo si immagazzina con scanf una stringa Hello there in un vettore di caratteri e la si stampa con printf, ottenendo come risultato solo Hello .
    E' possibile stampare la stringa completa?
    Se la stringa è più corta della dimensione del vettore, gli elementi rimanenti conterranno degli spazi segiuti dal carattere nullo di terminazione??

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    1) Mostra il codice

    2) No ... non vengono aggiunti spazi automaticamente

  3. #3
    (1)
    codice:
    #include <stdio.h>
    
    int main()
    {
       char string1[ 20 ];
       char string2[] = "string literal";
       int i;
    
       printf("Enter a string: ");
       scanf( "%s", string1 );
    
       printf( "string1 is: %s\nstring2 is: %s\n"
               "string1 with spaces between characters is:\n",
               string1, string2 );
    
       for ( i = 0; string1[ i ] != '\0'; i++ ) {
          printf( "%c ", string1[ i ] );
       }
    
       printf( "\n" );
    
       return 0;
    
    }
    (2)Ma allora, se per esempio abbiamo un array[20] e con printf inseriamo solo Hello, gli altri 14 elementi è come se non esistessero

  4. #4

    Per essere chiari. Quindi nell'esempio there sarà ignorato, giusto?

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da f@nt@m@n
    Per essere chiari. Quindi nell'esempio there sarà ignorato, giusto?
    Sì, ma la cosa è dovuta esclusivamente alla scanf e a come gestisce l'input in base agli specificatori di formato.

    Se leggi della documentazione sulla scanf, troverai ad esempio che per lo specificatore %s dice:

    Matches a sequence of non-white-space characters; the next pointer must be a pointer to char, and the array must be large enough to accept all the sequence and the terminating NUL character. The input string stops at white space or at the maximum field width, whichever occurs first.

    Quindi lo spazio è un delimitatore.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  6. #6
    ok. Questo mi è chiaro. E se l'input è minore della grandezza del vettore, gli elementi rimanenti è come se non esistessero, giusto?

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da f@nt@m@n
    ok. Questo mi è chiaro. E se l'input è minore della grandezza del vettore, gli elementi rimanenti è come se non esistessero, giusto?
    Quello che c'è in tutti i restanti elementi del vettore, non lo so, probabilmente schifezze.
    Se il tuo input è "Hello there", l'unica cosa sicura è che la scanf "deposita" nel buffer 6 caratteri

    H e l l o \0

    (quindi compreso il nullo finale)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  8. #8
    Tutto chiaro . Ti ringrazio

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.