Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo,

ich habe ein kleines Problem. Ich habe ein Programm geschreiben ,dass eine User eingabe beinhaltet, und diese wieder ausgibt. Die Ein-/Ausgabe habe ich in eine Schleife gesetzt, da der User mehrere Zahlen eingeben soll, aber irgendwie wird die Eingabe gepuffert. Bei ersten durchlauf wird bei scanf noch auf die User eingabe gewartet, aber jeden weiteren Durchlauf wird nicht auf die User-eingabe gewartert, aber es wird jedesmal die Usereingabe ausgegben die beim ersten Durchlauf eingegeben worden ist.

Ich benutze gcc auf Fedore Core 4

Hat jemand Tipps?


#include <stdio.h>


int main()

{

    int str[2];

    int test =0;


    do{


	printf("BITTE geben Sie eine Zahlen ein: ");

	scanf("%2[0-9]", str);

    	printf("STR: %s\n", str);

    	fflush(stdin);


    }while(test == 0);


    return(0);

}


Dieses Verhalten kommt daher, dass der Tastendruck der Eingabetaste noch im Eingabepuffer steht und dort nicht rausgeholt wird. Das kannst du beheben, indem du vor scanf den Puffer löschst:

    setvbuf(stdin,NULL,_IONBF,0);
setvbuf(stdin,NULL,_IOFBF,BUFSIZ);
[/code]

Und lass fflush(stdin) weg, das erzeugt undefiniertes Verhalten.

Funktioniert, danke.

ich habe doch fflush(stdin) benutzt?

ich habe doch fflush(stdin) benutzt?
fflush erzeugt, wenn es auf Eingabeströme wie stdin angewendet wird, undefiniertes Verhalten. Bei einigen Compilern bewirkt es ein Löschen des Eingabepuffers, bei deinem bewirkt es anscheinend gar nichts, aber darauf darf man sich nicht verlassen.

Danke,

kennst du ein gutes Programmier-Forum?

Der "traffic" ist bisschen wenig, so ist es super.

ich nehme meine Aussage zurueck.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.