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

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]

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...