Supportnet Computer
Planet of Tech

Supportnet / Forum / Anwendungen(Java,C++...)

KLEINES C-Problem?





Frage

hi friends, mir hat gerade ein freund ein kleines c-testprogramm geschickt. es handelt sich um eine kleine passwort-abfrage. menuepunkt 1 und 3 funzen auch. aber bei menupunkt 2 überspringt das ausgeführte programm einfach die eingabe. ich kann kein neues passwort eingeben. eigentlich sollte der befehl gets(n_pass); doch auf eine bildschirmeingabe warten. ich hoffe ihr könnt mir sagen, was wir falsch machen. der quellcode ist noch nicht fertig. also stört euch nicht an der optik. es geht nur um das verd...mte gets(n_pass); mfg fruitloop #include <iostream.h> #include <stdio.h> #include <string.h> void menu (); void new_pass (); char passwort[10]="test"; char n_pass[10]; long int eingabe,i; void new_pass () { printf("\nBitte geben Sie ihr neues Passwort ein.\n"); gets(n_pass); strcpy(passwort, n_pass); } void main () { menu(); } void menu () { do {printf("************ MENU ************\n"); printf("\n[1] Aktuelles Passwort ausgeben\n"); printf("\n[2] Passwort aendern\n"); printf("\n[3] Exit\n\n"); scanf("%i",&eingabe); switch(eingabe) { case 1: printf("\n\nIhr aktuelles Passwort lautet:\t%s\n\n\n",passwort); break; case 2: new_pass(); break; case 3: exit(0); default: printf("\nUngueltige Eingabe.\n"); break; } } while(eingabe!=3); }

Antwort 1 von Pumuckel

Du mußt fflush vor gets einfügen, um den input-stream vor dem Lesen zu löschen:


void new_pass ()
{
printf("\nBitte geben Sie ihr neues Passwort ein.\n");
fflush( stdin ); //<--- hier
gets( n_pass);
strcpy(passwort, n_pass);
}




Antwort 2 von Fruitloop

thanx,
es funzt,

muss ich das vor jedem gets() machen?

mfg
fruitloop

Antwort 3 von Pumuckel

Ja, da Du mit gets den Tastaturbuffer ausliest. Wenn z.B. innerhalb einer rechenintensiven Schleife eine Taste gedrückt wird, kann es das Abfrageergebnis beeinflussen.

Stattdessen kannst Du aber auch eine normale Abfrage mit scanf machen!

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: