Umgang mit scanf

Windows 7. Aber das Programm muss auch auf Linux laufen. Tut fpurge das?
Aber da ich cygwin mit gcc benutze, sollte es doch auch auf Linux laufen, oder?
Nein. Ein Programm was auf Cygwin läuft ist trotzdem ein Windows Programm.

Die Funktion fpurge ist ein BSD Funktion und unter Linux nicht unbedingt verfügbar. Du solltest besser nur Funktionen der Standard-C Bibliothek verwenden.

Gruß
 
Das hatte mir aber nicht weitergeholfen, weil dann die Ausgabe "Ungueltige Eingabe" wieder so oft erscheint, wie ich Anzahl Buchstaben eingegeben habe.
Code:
#include <stdio.h>
int main(void)
{
    int zahl;
    int ok = 0;
    printf("Bitte eine Zahl > 10 eingeben\n");
	ok = scanf("%d", &zahl);
    do
    {       
        if (ok > 0 && zahl > 10)    
        {
            printf("%d\n", zahl);   
            return 0;
        } else {
            printf("Ungueltiges Format\n");   
			if (getchar() != '\n')
				ok = scanf("%d", &zahl);
        }
        
    } while (ok != EOF);
}
 
Zuletzt bearbeitet:
Und du hast schon 3 Jahre Java programmiert? :suspekt:

Wieso steht das scanf vor der Schleife?

Deine Einrückung von dem if nach printf ist falsch, d.h. die Anweisung steht an der falschen Stelle.

Abgesehen davon drückt die Formulierung "solange bis" oder "solange wie" doch eine Schleife aus, meinst du nicht? Du mußt also eine Schleife machen.

Du kannst dir auch dafür eine Funktion schreiben.

Gruß
 
Warum sollte das scanf nicht vor der Schleife stehen?
Und woher soll ich wissen, dass du innerhalb der while-Schleife noch eine zusätzliche while-Schleife einfügen willst?
Das wird mir langsam zu blöd hier. Vielleicht solltest du nicht dauernd in Rätseln sprechen.
 
Warum sollte das scanf nicht vor der Schleife stehen?
Weil du eine Zahl einlesen sollst und das eben solange probieren mußt, bis es geklappt hat.
Und woher soll ich wissen, dass du innerhalb der while-Schleife noch eine zusätzliche while-Schleife einfügen willst?
Weil ich es dir gesagt habe. :eek:

"wenn ok == 0 ist, lies solange Zeichen bis du auf ein \n oder EOF triffst"

Das ist doch ziemlich unzweideutig:
C:
if (ok == 0) {
  int c;
  do {
    c = getchar();
  } while (c != EOF && c != '\n');
}

Gruß
 

Neue Beiträge

Zurück