Zum Inhalt springen

kennt visual studio meinen operator nicht?


Empfohlene Beiträge

Geschrieben

hallo zusammen,

ich hab folgendes problem bzw. frage:

das ganze programm läuft in der konsole

ich hab mir ein simples menü gemacht realisiert mit switch anweisungen und dieses ding hab ich dann in eine do-while-schleife gepackt (denke das ist ne gute lösung, oder gibts da bessere/einfachere methoden??)

nun wenn ich zu meiner bedinung komme hab ich folgendes stehen


...

}

while((menuC != 'f') || (menuC != 'F'));

wenn ichs so mach kann ich so oft ein f oder ein F eingeben wie ich lustig bin das ding beendet die schleife einfach nicht... wieso? ich hab absolut keine ahnung mach ichs allerdings nur mit

...

}

while(menuC != 'f');

funktioniert das ganze ding wunderbar.

kann das evtl dran liegen dass es bei c++ (das ich nicht beherrsche) keinen || und da ja mei visual studio der compiler ja eigentlich ein c++ compiler ist??

und meine zweite frage ist:

wenn ich einen durchlauf der schleife habe, also z.b. menüpunkt a) ausführe und das programm dannach wieder das menü zeigt macht es das zwar auch aber zweimal

ich hab dann in der konsole zweimal das menü stehen aber beim ersten mal nur die printf anzeigen.

weis leider überhaupt nicht wieso.

wenn ihr den ganzen code braucht sagt bescheid, is noch nicht sehr viel zu posten :)

gruß

franky_

Geschrieben

hmm das macht durchaus sinn :) da hat mich die logik mal wieder geschlagen ;)

danke dir habs versucht und jetzt funktionierts auch :)

aber was ich immer noch nicht verstehe ist wieso ich mein menü nach einem durchlauf dann plötzlich zweimal in der konsole stehen hab?!?

gruß und danke

franky_

Geschrieben
aber was ich immer noch nicht verstehe ist wieso ich mein menü nach einem durchlauf dann plötzlich zweimal in der konsole stehen hab?!?
Das liegt vermutlich daran, wie du die Tastatureingaben einliest.
Geschrieben

ich kopier einfach mal die ganze main rein:

int main()

{

	char menuC;


	do

	{

	printf("W\x84hlen Sie ihre Aktion im Men\x81 durch Eingabe aus, best\x84tigen Sie mit Enter\n\n");

	printf(" a) alle Kontakte anzeigen\n");

	printf("  Kontakt suchen\n");

	printf(" c) Kontakt hinzuf\x81gen\n");

	printf(" d) Kontakt bearbeiten\n");

	printf(" e) Kontakt l\x94schen\n");

	printf(" f) Beenden\n");

	scanf("%c", &menuC);


	switch(menuC)

	{

	case'a':

	case'A': list_contacts();

		break;


	case'b':

	case'B':


	case'c':

	case'C':


	case'd':

	case'D':


	case'e':

	case'E': break;

	}

	}

	while((menuC != 'f') && (menuC != 'F'));


	system("PAUSE"); 


	return 0;

}[/code]

gibts da bessere möglichkeiten die auswahl einzulesen?

gruß

Geschrieben

wenn ich einen durchlauf der schleife habe, also z.b. menüpunkt a) ausführe und das programm dannach wieder das menü zeigt macht es das zwar auch aber zweimal

ich hab dann in der konsole zweimal das menü stehen aber beim ersten mal nur die printf anzeigen.

Das liegt daran, dass du zeichenweise einliest (mit %c). Damit erhältst du nach der ersten Eingabe, ohne dass scanf wartet, das Zeichen für den Zeilenwechsel, den du mit der Eingabetaste ausgelöst hast.

Du könntest solche Zeichen ignorieren, und gleich nochmal scanf aufrufen:

do {
scanf("%c", &menuC);
} while( menuC == '\n' );[/code]

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...