C.边发边做
我不明白为什么即使我在切换框中选择1、2或3,它也不会循环。它只是在任务完成后退出程序,即使我没有按E或E。 我需要你的帮助C.边发边做,c,C,我不明白为什么即使我在切换框中选择1、2或3,它也不会循环。它只是在任务完成后退出程序,即使我没有按E或E。 我需要你的帮助 char ch; do { char* p; printf("Press 1 for qu. 1 \nPress 2 for qu. 2 \nPress 3 for qu. 3\nPress 'e' or 'E' to exit\n"); scanf("%c", ch); switch (ch) { case '1':
char ch;
do
{
char* p;
printf("Press 1 for qu. 1 \nPress 2 for qu. 2 \nPress 3 for qu. 3\nPress 'e' or 'E' to exit\n");
scanf("%c", ch);
switch (ch)
{
case '1':
getMatrix();
break;
case '2':
printf("\nPlease enter strDestination:\n");
char str1[20], str2[20];
scanf("%s", str1);
printf("\nPlease enter strSource:\n");
scanf("%s", str2);
printf("%s\n", mystrcat(str1, str2));
break;
case '3':
printf("\nPlease enter the first string (str):\n");
char str3[20], str4[20];
scanf("%s", str3);
printf("\nPlease enter the sub string to search for(strSearch):\n");
scanf("%s", str4);
p = myStrstr(str3, str4);
if (p != 0)
printf("Location found: char %c index %d\n", *p, p - str3);
else
printf("strSearch is not found in str\n");
break;
case 'e' || 'E':
system("exit");
break;
default:
printf("Wrong input\n");
break;
}
} while (ch != 'e' || ch != 'E');
三个问题:
scanf
不正确,您需要提供指向ch
的指针。使用scanf(“%c”和&ch)代码>
while(ch!=“e”&&ch!=“e”)代码>。如果您考虑“代码> CH <代码>是<代码> E < /代码>,这是很容易看到的。在这种情况下,ch!='E'
是1
,因此循环仍然终止
案例“e”|“e”:
改写为案例“e”:案例“e”:
案例“e”|“e”的值为1,单位为Cch!='e'| | ch!='E'
总是正确的。您忘记了ch
之前的&
:scanf(“%c”,&ch)猜一猜,你的意思是!(ch='e'| ch='e')
记住C中的逻辑表达式使用。所以如果ch!='e'
为真,则整个表达式为真。如果ch!='e'
为false,则ch!='E'
将为真。因此,无论你做什么,你都会得到一个始终为真的表达式。顺便说一句,如果你想退出你的程序,那么system(“exit”)
不是这样做的。