Probleme mit der Eingabe und Überprüfung von Zeilen
-
Hi!
Ich versuche gerade für mcih eine Allzwecklösung zum einlesen von Zeilen zusammenzubasteln. Das folgende Programm hat folgenden Ablauf:
Der User gibt eine Zeile ein. Danach wird überprüft ob die Zeile aus 2 (Dezimal-)Zahlen besteht. Wenn das der Fall ist, werden diese ausgegeben, andernfalls wird eine Fehler meldung ausgegeben. Das funktioniert auch für 2 einstellige Ziffern. Aber sobald ich z.B. 22 33 eingebe springt er in den Fehlermeldungsblock. Es funktioniert also nur dei eingabe von einstelligen Ziffern. Ich habe jetzt schon mehrere Stundne damit verbracht den Fehler zu finden (Debuggen usw.). Aber bin mittlerweile am verzweifeln. Hier erstmal der Quellcode/*** Überprüfen der Eingabe ***/ #include <stdio.h> /* Zum Einlesen einer Zeile */ int getline(char string[]) { int i, c; /* Zeichenweises Einlesen. Abbruch bei Ueberschreiten der Grenze des char-Vektors, bei Eingabe von <Strg>Z oder Return */ fflush(stdin); for(i = 0; (i < (sizeof(string) - 1)) && ((c = getchar()) != EOF) && (c != '\n') ; ++i) { string[i] = c; } fflush(stdin); /* Abschluss der Zeichenkette mit ASCII-NULL */ string[i] = '\0'; /* Wenn EOF als 1.Zeichen eingegeben */ if(i == 0 && c == EOF) { i = EOF; } return i; } int main(void) { char eingabe[80 + 1]; double zahl1, zahl2; printf("Geben sie zwei Zahlen ein:\n"); /* Wenn der User eine Zeile eingegeben hat und diese an erster und zweiter Stelle eine Zahl enthaelt*/ if((getline(eingabe) > 0) && (sscanf(eingabe, "%lf %lf", &zahl1, &zahl2) == 2)) { printf("Sie haben folgendes eingegeben: \nzahl1 = %lf \nzahl2 = %lf\n", zahl1, zahl2); } else { fprintf(stderr, "Falsche Eingabe\n"); } printf("\n<Druecken sie ENTER>\a"); fflush(stdin); // Damit das Programm durch getchar() angehalten werden kann getchar(); return 0; }
Ich wäre für jeden Hinweis bzw Lösung dankbar.
MFG
-
fgets()