Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [C] Spazio come Invio

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    113

    [C] spazio come invio

    In questa funzione di codice:

    void inserisci()
    {
    printf ("\nInserisci il nome: ");
    scanf ("%s", & archi[i].nome);

    printf ("Inserisci l'eta' relativa: ");
    scanf ("%d", & archi[i].eta);

    printf ("Inserisci il sesso relativo (m o f): ");
    fflush (stdin);
    scanf ("%c", & archi[i].sex);

    i++; /*Incremento i per la numerazione dei record e stabilisco cosi' la dimensione dell'archivio*/
    }

    quando inserisco il nome se metto uno spazio mi considera lo spazio come un invio ( e quindi non posso scrivere nome e cognome). A cosa sarà dovuto il problema?

  2. #2

    Re: [C] spazio come invio

    Originariamente inviato da pietror87
    ...
    scanf ("%s", & archi[i].nome);
    ...

    quando inserisco il nome se metto uno spazio mi considera lo spazio come un invio ( e quindi non posso scrivere nome e cognome). A cosa sarà dovuto il problema?
    La scanf() 'legge' i dati fino al primo carattere di separazione (spazio, tabulazione, new line).

    Leggi qui.
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    113
    Ho letto tutto, grazie dell'informazione.. Ti chiedo un'altra cosa pero'... Se io voglio prendere caratteri della stringa con lo scanf finchè non premo invio sulla tastiera che codice devo usare?

    int i=0;
    char stringa[LUNGHEZZA_MAX+1];

    scanf("%c",&stringa[i]); // leggo il primo carattere
    while ( i<LUNGHEZZA_MAX && // se c'è spazio e
    stringa[i]!=27 && // ... l'ultimo carattere letto non è ESC e
    stringa[i]!='\0') { // ... l'ultimo carattere letto non è '\0', allora...
    i++;
    scanf("%c",&stringa[i]); // leggo il prossimo carattere
    } stringa[i]='\0'; // metto '\0' come ultimo carattere

    Per Esc qui usa 27, per invio che devo usare?

  4. #4
    Originariamente inviato da pietror87
    int i=0;
    char stringa[LUNGHEZZA_MAX+1];

    scanf("%c",&stringa[i]); // leggo il primo carattere
    while ( i<LUNGHEZZA_MAX && // se c'è spazio e
    stringa[i]!=27 && // ... l'ultimo carattere letto non è ESC e
    stringa[i]!='\0') { // ... l'ultimo carattere letto non è '\0', allora...
    i++;
    scanf("%c",&stringa[i]); // leggo il prossimo carattere
    } stringa[i]='\0'; // metto '\0' come ultimo carattere

    Per Esc qui usa 27, per invio che devo usare?
    Personalmete preferirei utilizzare la versione con il
    getchar(), anzi ancora meglio userei il getch().


    Comunque per la scanf() devi modificare la riga :
    stringa[i]!=27

    con il valore
    stringa[i]!=10
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    113
    Grazie mille dell'aiuto! bye bye

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.