Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Menüauswahl in C

Frage Entwicklung C und C++

Mitglied: Butterblume

Butterblume (Level 1) - Jetzt verbinden

10.05.2007, aktualisiert 16:52 Uhr, 6742 Aufrufe, 4 Kommentare

Hallo Zusammen, ich habe folgendes Testprogramm geschrieben:

01.
#include <stdio.h> 
02.
#include <stdlib.h> 
03.
#include <ctype.h> 
04.
 
05.
int main () { 
06.
     
07.
    printf ("Waehlen Sie ein Menu aus:\n\n"); 
08.
     printf ("1. \n"); 
09.
     printf ("2. \n"); 
10.
     printf ("3. \n"); 
11.
     printf ("4. \n"); 
12.
     printf ("5. \n"); 
13.
     printf ("6 Beenden\n\n"); 
14.
    printf ("Bitte Ihre Wahlnummer eingeben: "); 
15.
     
16.
    char c; 
17.
    c = getchar ();                
18.
     
19.
    switch (tolower (c)) { 
20.
            
21.
      case '1': 
22.
      printf ("\nTest\n\n"); 
23.
      break; 
24.
       
25.
      case '2': 
26.
      printf ("\nTest\n\n"); 
27.
      break; 
28.
       
29.
      case '3': 
30.
      printf ("\nTest\n\n"); 
31.
      break; 
32.
       
33.
      case '4': 
34.
      printf ("\nTest\n\n"); 
35.
      break; 
36.
       
37.
      case '5': 
38.
      printf ("\nTest\n\n"); 
39.
      break; 
40.
       
41.
      case '6': 
42.
      printf ("\nDas Programm wird beendet!\n\n"); 
43.
      break; 
44.
       
45.
      default: 
46.
      printf ("\n\nFalsche Eingabe\n\n"); 
47.
      break; 
48.
49.
       
50.
        system ("PAUSE"); 
51.
        return 0; 
52.
        }
Nun möchte ich gerne, dass es nach der Durchführung der Auswahl wieder zum Menü zurückkommt. Habe sowas schon mal in der Schule gemacht, aber wieder vergessen.

Danke für Ihre Hilfe.

Lg, Kristina

*EDIT*Neue Version***

01.
#include <stdio.h> 
02.
#include <stdlib.h> 
03.
#include <ctype.h> 
04.
 
05.
int main () { 
06.
     
07.
    bool verlassen = false; 
08.
     
09.
    do {  
10.
    printf ("Waehlen Sie ein Menu aus:\n\n"); 
11.
     printf ("1. \n"); 
12.
     printf ("2. \n"); 
13.
     printf ("3. \n"); 
14.
     printf ("4. \n"); 
15.
     printf ("5. \n"); 
16.
     printf ("6 Beenden\n\n"); 
17.
    printf ("Bitte Ihre Wahlnummer eingeben: "); 
18.
     
19.
    char c; 
20.
    c = getchar ();                
21.
     
22.
    switch (tolower (c)) { 
23.
            
24.
      case '1': 
25.
      printf ("\nTest\n\n"); 
26.
      break; 
27.
       
28.
      case '2': 
29.
      printf ("\nTest\n\n"); 
30.
      break; 
31.
       
32.
      case '3': 
33.
      printf ("\nTest\n\n"); 
34.
      break; 
35.
       
36.
      case '4': 
37.
      printf ("\nTest\n\n"); 
38.
      break; 
39.
       
40.
      case '5': 
41.
      printf ("\nTest\n\n"); 
42.
      break; 
43.
       
44.
      case '6': 
45.
      printf ("\nDas Programm wird beendet!\n\n"); 
46.
      verlassen = true; 
47.
      break; 
48.
       
49.
      default: 
50.
      printf ("\n\nFalsche Eingabe\n\n"); 
51.
      break; 
52.
53.
      } while (!verlassen); 
54.
       
55.
        system ("PAUSE"); 
56.
        return 0; 
57.
        }
Die Kästchen werden automatisch 2 Mal ausgeführt....nein...nicht die Kästchen, die Menüauswahl wird doppelt ausgeführt, beim zweiten Mal ohne Zeichen-Eingabe...ich weiss nicht warum. Kann mir jemand helfen???

Lg, Kristina
Mitglied: filippg
10.05.2007 um 12:30 Uhr
Hallo,

du kannst alles, was bisher in main() steht in eine do..while-Schleife packen:

int main() {
bool verlassen = false;
do {
printf("Waehlen Sie ein Menu aus:\n\n");
....
switch...
..
case '6':
verlassen = true;
...
} while (!verlassen);
}

Filipp
Bitte warten ..
Mitglied: Butterblume
10.05.2007 um 13:34 Uhr
Das ist jetzt super, nun habe ich noch ein Problem...jede Ausführung "Test" wird zuerst ausgeführt, jedoch dann noch enen zweiten Mal automatisch, wo dann einfach nichts eingegeben wird.
Immer doppelt...was kann das sein?
Und noch eine Frage? "break" wird trotzdem noch nach jedem "case" am Schluss geschrieben??

Lg, Kristina
Bitte warten ..
Mitglied: miniversum
10.05.2007 um 16:43 Uhr
Ich würde kein
Do{
...
}While(...)

sondern ein
While(...)
{
...
}
machen.

zum Break:
der break ist so richtig, sonst würde er z.B. nach dem case 3 (wenn du dort das break vergessen solltest) direkt weiter in Case 4 laufen und das dort auch ausführen. Könntest es aber je nach Anwendungsfall aber auch absichtlich weglassen z.b. bei irgentwelchen Automaten im Initiallisierungsschritt.

miniversum
Bitte warten ..
Mitglied: Butterblume
10.05.2007 um 16:52 Uhr
Also es funktioniert mit beidem do-while und while-Schleife gut...hab einfach jetzt 3 versionen. ich hab's rausgefunden wieso es doppelt war, man sollte den auspuffer mit fflush(stdin) leere.

lg, kristina
Bitte warten ..
Ähnliche Inhalte
C und C++
Von C auf C++ umsteigen
Frage von jangruC und C++3 Kommentare

Sehr geehrte Community, wie Sie meiner Überschrift bereits entnehmen konnten, habe ich vor von C auf C umzusteigen. Da ...

C und C++
Fehlendes verständiss von C und C++
Frage von zelamediaC und C++8 Kommentare

Hallo, ich wollte mich in nächster zeit mit C auseinandersetzen habe aber vorher eine frage die mich schon immer ...

C und C++
C funktioniert und C++ nicht, warum?
gelöst Frage von MigmannC und C++5 Kommentare

Hallo Leute, ich möchte Assembler, C, und C lernen. Mein Betriebsystem ist Windows 7. Natürlich kann ich noch nicht ...

IDE & Editoren
IDE für C-Sharp und C++ auf Windows
gelöst Frage von BugdroidIDE & Editoren8 Kommentare

Hallo, Ich nutze derzeit Visual Studio, aber auf Dauer ist es mir etwas zu Ressourcenfressend und für meine Zwecke ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 10 StundenBatch & Shell8 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 12 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 1 TagMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 1 TagSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...

Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...

Batch & Shell
Neuste Datei via PowerShell kopieren
gelöst Frage von kaiuwe28Batch & Shell11 Kommentare

Hallo zusammen, ich hatte mir mit Hilfe der Suche im Forum einen kleinen Code von colinardo rausgesucht und versucht ...