Problem mit Linefeed after Return

Ich hab ein Problem mit meinem C-Programm (Dev-C++) oder Windows. Ist mir noch nicht ganz klar.

Das Problem ist das, wenn ich ein Programm schreibe der ein Zeichen lesen und wieder ausdrucken soll, druckt er mir nicht nur das Zeichen sondern auch noch nen Zeilensprung.

Besonders ausfällig ist dies in einer Schleife. Er ließt das Zeichen läuft durch die Schleife und läuft dann die Schleife noch mal mit dem Return ab.

hier mal der gekürzte Code:

#include

int main()
{
int ausgabeklein=0,ausgabegros=0,ausgabezeichen=0,ausgabeziffer=0;
int anzahlzeichen=0;
int i;
char eingabe;
printf(„Bitte ein beliebiges Zeichen eingeben:\n“);

do {
printf(" „);
scanf (“%c",&eingabe);
fflush(stdin);
anzahlzeichen++;

if (eingabe>64&&eingabe96&&eingabe47&&eingabe

Hi,

stdin hat einen Zeilenpuffer. Erst mit Enter wird der Inhalt des Tastaturpuffers nach stdin überführt. Was Du eigentlich willst, ist direkt das Tastaturpuffer zu lesen.

scanf liest den geforderten Inhalt und lässt das nächste Zeichen in stdin, so dass \n immer noch vorhanden ist.

fflush ist nur für Ausgabestreams gedacht, auf Eingabestreams ist das Verhalten undefiniert. Der MS-C-Compiler leert den Puffer, Unix- bzw. gcc-orientierte Compiler scheinen gar nichts zu machen.

Ersetze mal fflush(stdin) durch

while( getchar()!=’\n’);

oder

char eingabe,c;
/*…*/
if( (c=getchar())!=’\n’) ungetc(c,stdin);

Gruß Lutz

hat funktioniert.
mein Informatik Dozent ist zwar immer noch ratlos, aber versteht wenigstens die vorgehensweise der paar Zeilen.

Viele dank für die Antworten