Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 6565 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++
Fehlendes verständiss von C und C++ (8)

Frage von zelamedia zum Thema C und C ...

Bibliotheken & Toolkits
gelöst Visual C++Bibliotheken sprachabhängig (5)

Frage von Vancouverona zum Thema Bibliotheken & Toolkits ...

Windows Systemdateien
gelöst Warum System auf "C:" (35)

Frage von DzumoPRO zum Thema Windows Systemdateien ...

Windows Server
C sharp oder Powershell oder VB? (3)

Frage von 1410640014 zum Thema Windows Server ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Server-Hardware
HP DL380 G7: Booten vom USB via USB 3.1-PCI-e Karte möglich? (24)

Frage von Paderman zum Thema Server-Hardware ...

Windows 7
Bluesreens unternehmensweit (19)

Frage von SYS64738 zum Thema Windows 7 ...

LAN, WAN, Wireless
IP Adressen - Modem - Switch - Accesspoint (17)

Frage von teuferl82 zum Thema LAN, WAN, Wireless ...

Windows 10
Programm Installation bei Win 10 Fehlerhaft (13)

Frage von Keineahnungvonnix zum Thema Windows 10 ...