2010-11-28 7 views
-1

wie man den Benutzer streng darauf beschränkt, nur eine Nummer einzugeben, wenn das Programm nach der Eingabe fragt oder wie man eine numerische Eingabe auf einen Eintrag anwendet, kann mir jemand weiterhelfen.Standard Numerische Eingabe Mit if sonst Befehl in c

als exmpale:

#include "stdio.h" 
#include "conio.h" 
    void main() 
    { 
     int x; 
     printf("Enter a numeric value:"); 
     scanf("%d",&x); 

     if(..........) // here i supose to write the if statement 
} 

Antwort

2

scanf gibt die Anzahl der Parameter erfolgreich verarbeitet, so müssen Sie den Rückgabewert speichern und testen.

Daher können Sie if (scanf("%d", &x)) { ... } else {... } stattdessen tun, da scanf entweder 0 zurück (keine ganze Zahl wurde angepasst) oder 1 (wenn eine ganze Zahl angepasst wurde)

EDIT

if (scanf("%d", &x)) { 
    /* an integer was read into x, so what do you want to do here? */ 
} else { 
    /* what the user typed was not an integer, so normally you want to write some error message or something */ 
} 
+0

kann man die ganze Anweisung schreiben Ich habe nicht verstanden, was zu schreiben ist, wenn {body} oder sonst {body} – user517026

+0

scanf ("% d", ...) hat keine Über-/Unterlauf Bereichsprüfung, versuchen Sie eine Eingabe wie "999999999999999999999999999999999999999", scanf gibt OK aber ist nicht – user411313

0

Sie sollten erhalten Die gesamte Zeile, die vom Benutzer eingegeben wurde, verwendet dann isdigit() (definiert in ctype.h), um jeden Zeichen zu überprüfen, ob es eine Zahl ist.

+0

, aber ich kann nicht verwenden isdigit oder ctype.hi nicht über diese Funktion oder Header-Datei wissen – user517026

+0

Dies ist unnötig langsam und schmerzhaft. Viele Implementierungen haben eine tatsächliche nicht-triviale Funktion für "isdigit", obwohl der C-Standard erfordert, dass er nur dann ungleich Null zurückgibt, wenn "((vorzeichenlos) c-'0 '<10)". –

+0

@R Wenn die Funktion trivial ist, wird sie wahrscheinlich vom Compiler inline geschrieben. Eine vorzeitige Optimierung hat keinen Sinn. Auch wenn diese "Umwandlung" funktioniert, ist es kryptisch. Es gibt einen Grund, warum die Funktion "isdigit()" existiert. – onemasse

0

Denken Sie auch darüber nach, die Eingabe in eine unendliche While-Schleife zu übernehmen und daraus zu brechen, wenn der Benutzer die richtige Eingabe eingibt.

0

Wenn Sie die Eingabe des Benutzers wollen eine bestimmte Bedingung zu erfüllen, können Sie etwas tun:

#include <stdio.h> 

int main() 
{ 
    int x; 
    printf("Enter a numeric value:"); 

    scanf("%d", &x); 

    //suppose you want the user to enter values b/w 0 and 999 
    while ((x < 0) || (x >= 1000)) { 
     scanf("%d", &x); 
    } 
} 

Denken Sie daran, void main und conio.h sind nicht Standard-konform.