Es gibt mehrere Postings, die switch-Anweisungen innerhalb von while-Schleifen betreffen, mit Ausnahme der Tatsache, dass keine von ihnen in C erledigt ist, zumindest von dem, was ich gesehen habe. C++ kann boolesche Ausdrücke erstellen, die mir bekannt sind, aber nicht in C. Ich habe eine while-Schleife, die ein switch-Steuerelement enthält. Wenn ich jedoch Break-Anweisungen in meinem Switch schreibe, geht es zurück zum Anfang der Schleife und lässt mein Programm für immer laufen. Ignoriere die Funktionen, die ich verwende, denn sie funktionieren sicher. Ich brauche nur eine Erläuterung zu meinem Umgang mit der Nistgruppe. Vielen Dank!Switch-Anweisung innerhalb der While-Schleife in C
Here is my main.c:
while(1)
{
printf("0) Exit\n1) List Tasks\n2) Add Task\n");
printf("3)Delete Task\n4) Add Task From File\n");
printf("What would you like to do?\n");
fgets(buf1, 50, stdin);
p = atoi(buf1);
switch(p)
{
case 0:
break;
case 1:
printTaskList(pTaskList);
break;
case 2:
printf("Enter task name: ");
fgets(buf2,100,stdin);
printf("Enter task priority: ");
fgets(buf3,100,stdin);
printf("Enter task start date: ");
fgets(buf4,50,stdin);
pTask = makeTask(buf2,buf4,buf3);
addTaskToEnd(pTaskList,pTask);
break;
case 3:
printTaskList(pTaskList);
printf("What task would you like to delete? ");
fgets(buf6,50,stdin);
taskNum = atoi(buf6);
removeTask(pTaskList,taskNum);
break;
case 4:
printf("Enter the filename ");
fgets(buf7,50,stdin);
break;
default:
printf("ERROR: %d: Incorrect menu option\n", p);
}
}
Ihre break-Anweisung dient dazu, den Rest der Schalter Klauseln zu überspringen, die Sie in der Zeile nach dem Schalter auskippen bedeutet. Eine gängige Lösung, um den gesamten verschachtelten Bereich zu umgehen, besteht darin, den Code in eine Funktion zu verschieben und return anstelle von break zu verwenden. – 7stud
Identifizieren Sie die Punkte, die Sie aus der while-Schleife innerhalb Ihres switch body herausbrechen wollen, setzen Sie ein Flag, das dies anzeigt, und lassen Sie das 'while (Ausdruck)' das Flag für den break-state auswerten (dh 'while (true)') 'while (stay_in_while)', und '' stay_in_while' 'wird durch den zu brechenden Switch-Code gelöscht. – WhozCraig
Sie haben sich geirrt, C hat boolesche Ausdrücke und einen Datentyp mit einem eingebauten Typ '_Bool' und wenn Sie' 'einschließen Es gibt auch "bool", "false" und "true". –