Dateneingabe: Unterschied zwischen den Versionen

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche
(Seite importiert.)
(kein Unterschied)

Version vom 27. März 2009, 19:19 Uhr

Dieser Text ist auf Grund Anfrage (per E-Mail) von Andy entstanden, ich habe ihn hierher kopiert, nachdem er vermutlich auch für andere interessant ist ...


Wie kann ich über Eingaben im Zahlenbereich Int./float eingeben, bzw. die Strings umwandeln ??

Strings einlesen hast du schon?

Am sinnvollsten ist es meines Erachtens, die als Textzeilen eingelesenen Strings dann in Zahlen umzuwandeln. Dazu seien

| NAME
|        atoi, atol, atoll, atoq - convert a string to an integer
|
| SYNOPSIS
|        #include <stdlib.h>
|
|        int atoi(const char *nptr);
|        long atol(const char *nptr);
|        long long atoll(const char *nptr);
|        long long atoq(const char *nptr);

empfohlen.

Um einen float zu erhalten, solltest du strtod (siehe manpage) verwenden. Alternativ auch strtof (erzeugt einen float), letzteres ist allerdings nur eine Erweiterung der GNU C-Standardbibliothek.

Wenn du direkt Zahlen vom Benutzer (bzw. aus Dateien) lesen willst, kannst du zum Beispiel scanf (bzw. fscanf) verwenden:

=== SCHNIPP ===
int 
main(void) {
        int wert;
        scanf("%d", &wert);
        printf("Sie haben %d eingegeben.", wert);
        return 0;
}
=== SCHNAPP ===

... scanf hat in dieser Form allerdings den Nachteil, dass es nur die eigenen Zeichen tatsächlich liest und "verbraucht". Das heißt, dass das eingegebene Zeichen zum Abschluss der Zahleneingabe (regelmäßig also ein ENTER), noch in der Eingabe stehen. Wenn du danach (zum Beispiel mit fgets) eine Zeile lesen willst, liest diese erstmal das return von vorher. Dann gilt nur: happy debugging :-)