Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [C] Verificare che un input sia un intero

  1. #1

    [C] Verificare che un input sia un intero

    ciao a tutti, sono nuovo in c, non so come spiegarlo ma avrei bisogno di verificare che un input (scanf) sia int, e se non è tale, utilizzare printf per stampare a video un messaggio di errore.
    ho letto qualcosa su un istruzione "cin", ma, anche aggiungendo iostream e string come librerie non rla riconosce. qualche consiglio?

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,550
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2017
    Messaggi
    1
    Se dal terminale digiti:
    codice:
    $ man scanf
    Puoi leggere la documentazione di scanf. In particolare:

    codice:
    RETURN VALUES
         These functions return the number of input items assigned.  This can be fewer than provided for, or even zero, in the event of a matching failure.  Zero
         indicates that, although there was input available, no conversions were assigned; typically this is due to an invalid input character, such as an alpha-
         betic character for a `%d' conversion.  The value EOF is returned if an input failure occurs before any conversion such as an end-of-file occurs.  If an
         error or end-of-file occurs after conversion has begun, the number of conversions which were successfully completed is returned.
    Quindi nel tuo caso ti basta verificare che scanf non restituisca 0. Nel caso in cui restituisca 0, significa che nessuna variabile è stata assegnata (perché magari invece di inserire un numero l'utente ha digitato una sequenza di caratteri) e in quel caso l'assegnazione della variabile non riesce e si esce dal processo.

    codice:
    printf("Inserisci numero: ");
    int numero;
    
    
    if(scanf("%d", &numero) == 0) {
    	printf("Error\n");
    	exit(1);
    }
    
    
    printf("Numero: %d", numero);

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 © 2018 vBulletin Solutions, Inc. All rights reserved.