"Vorgabe" bei Texteingabe
-
Hallo,
ich würde gerne zum Ändern vorhandener Datensätze folgendes bezwecken:
int a = 12345; printf("Datum a aendern: "); scanf("%d",&a);
Nur dass möglichst der Inhalt von a nun schon, wie vom Nutzer über scanf eingegeben, angezeigt wird. Drückt er einfach auf Enter, bleibt a=a, wenn er z.B. zwei mal BackSpace drückt und bestätigt, ist a nur noch 123.
Gibt es eine Möglichkeit einen solchen "Preset" für eine Funktion wie scanf zu realisieren ?
MfG. Sandkorn
-
Das geht nicht so leicht, du kannst aber ne leere Eingabe akzeptieren oder eine entsprechende (platformabhängige) Bibliothek nutzen.
Siehe
http://stackoverflow.com/questions/2311156/how-do-i-use-scanf-to-accept-a-default-value-by-simply-pressing-enter-key
und
http://stackoverflow.com/questions/13841455/default-value-for-scanf
-
Du kannst einen Text (String) einlesen und den dann mit
strtol
odersscanf
auswerten.Warum das mit
scanf
nicht direkt geht:
scanf
überliest Whitespace. Dazu zählt auch das '\n' von der Entertaste.
Wenn keine gültige Eingabe kommt (z.B. ein Buchstbe bei %d) dann wird an der Variablen auch nichts geändert.
Du kannst das über den Rückgabewert vonscanf
feststellen.
Danach musst du aber die falschen Zeichen aus dem Eingabestrom entfernen.
-
Gängigerweise macht man das so, dass der Prompt den Defaultwert irgendwie signalisiert.
Gib mir a! [12345]>
Nun kannst du entweder einen neuen Wert für a eingeben oder einfach Enter drücken und der vorgegebene Wert 12345 wird übernommen. Willst du wirklich den alten Wert editieren, solltest du dir die Bibliothek ncurses mal ansehen.
http://de.wikipedia.org/wiki/Ncurses (weiterführende Links beachten)