Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [C] stringhe con scanf

  1. #1

    [C] stringhe con scanf

    salve ragazzi volevo chiedervi una cosa: sto facendo una tesina client-server, e ho un problema banale ma su cui mi ci sto ammazzando un po troppo: praticamente devo fare leggere da tastiera un nome e un cognome. Pero purtroppo con la scanf mi succede che, se una persona ha un doppio cognome o un doppio nome, mi legge solamente il primo dei due a causa dello spazio che per forza di cose c'è tra una parola e l'altra.Come posso fare senza utilizzare la gets, tenendo la scanf? vi posto il pezzo di codice dove mi sto bloccando, giusto per farvi leggere qualcosina:
    ...
    int scrittura() {



    int res;



    printf("Inserire Nome (max 32 caratteri)\n");
    scanf("%s", utente.nome);

    printf("Inserire Cognome (max 32 caratteri)\n");

    scanf("%s", utente.cognome);

    printf("Inserire Numero Telefonico (max 32 caratteri)\n");

    scanf("%s", utente.numero);

    ...
    come si fa?? grazie mille in anticipo a chi risponderà!

  2. #2
    Usare il gets è l'unica soluzione. Esempio:

    printf("Inserire Nome (max 32 caratteri)\n");
    gets(utente.nome);

    per utilizzarlo serve la libreria string.h e occhio che se per caso prima di usare il gets prendi un numero ti conta l'invio come carattere, quindi per comodità dopo che prendi un qualsiasi numero e successivamente usi il gets dopo la scanf del numero metti un getchar();

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: [C] stringhe con scanf

    Originariamente inviato da IIAlexII
    salve ragazzi volevo chiedervi una cosa: sto facendo una tesina client-server, e ho un problema banale ma su cui mi ci sto ammazzando un po troppo: praticamente devo fare leggere da tastiera un nome e un cognome. Pero purtroppo con la scanf mi succede che, se una persona ha un doppio cognome o un doppio nome, mi legge solamente il primo dei due a causa dello spazio che per forza di cose c'è tra una parola e l'altra.Come posso fare senza utilizzare la gets, tenendo la scanf?
    Prova con scanf("[a-z A-Z0-9]", utente.nome);

    edit
    Le parentesi quadre servono a specificare gli input accettati:
    [a-z A-Z0-9] significa "lettere minuscole", lo spazio, "lettere maiuscole" e "numeri".
    Se all'inizio del set metti ^ invece neghi. Ad esempio, [^aeiou] significa "niente vocali".
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Prova con scanf("[a-z A-Z0-9]", utente.nome);

    edit
    Le parentesi quadre servono a specificare gli input accettati:
    [a-z A-Z0-9] significa "lettere minuscole", lo spazio, "lettere maiuscole" e "numeri".
    Se all'inizio del set metti ^ invece neghi. Ad esempio, [^aeiou] significa "niente vocali".


    grazie alex ma purtroppo non va bene perchè nel momento in cui faccio partire la comunicazione tra client e server, non so perchè ma non mi fa neanche digitare un "possibile" nome o cognome ma inserisce direttamente i campi vuoti!

    per il resto volevo evitare di usare le gets perchè nel server come nel client ho gia sviluppato altri metodi nel quale uso scanf e quindi vorrei evitare di usare system call alternative!

    grazie cmq per il vostro aiuto!

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da IIAlexII
    grazie alex ma purtroppo non va bene perchè nel momento in cui faccio partire la comunicazione tra client e server, non so perchè ma non mi fa neanche digitare un "possibile" nome o cognome ma inserisce direttamente i campi vuoti!
    Ci sarà lo stdin "sporco". Prova a cercare nel forum, se n'è parlato più volte in passato...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    -
    GiancolaWeb.Com
    Realizzazione Soluzioni Web - Gestione Database - Manutenzione e riparazione PC

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.