在 Do while 语句中发出不断循环的问题
Issue in Do while statement that keeps looping itself
我试图强制用户只能在 R 、 C 或 T 之间进行选择。但是我发表了声明,它一直要求我重新输入一个输入,因为它试图说给定的字母不是其中之一。还要验证我尝试打印 hello 但它没有被打印出来,这意味着该软件仍然停留在 do while 语句。有什么帮助吗?
我的代码:
#include <stdio.h>
int main()
{
char a;
do
{
printf ("Choisit parmis R , C ou T\n");
scanf("%c", &a);
} while (!((a == "R") ||(a == "T") ||(a == "C") ));
printf("hey");
return 0;
}
看到这里有一个很小的问题。我假设您刚刚学习了一种让您感到困惑的语言,例如 python。在 C 中,双引号内的字符串表示字符串,而单引号内的字符串表示字符。检查这个
var c = "C";//This is a string
var c = 'C';//This is a char
所以你正在比较永远不会相等的字符串和字符
至于你的代码,写
#include <stdio.h>
int main()
{
char a;
do
{
printf ("Choisit parmis R , C ou T\n");
scanf("%c", &a);
} while (!((a == 'R') ||(a == 'T') ||(a == 'C') ));
printf("hey");
return 0;
}
您将字符 a 与字符串“R”、“T”和“C”进行比较,这不是您想要的。你想与单个字符进行比较,它是这样写的:
while (!((a == 'R') ||(a == 'T') ||(a == 'C') ));
注意单引号' '用于写字符常量
初学者使用
scanf( " %c", &a );
^^^^^
而不是
scanf( "%c", &a );
^^^^
否则该函数也将读取空格。
"R"
、"T"
、"C"
是类型为 char[2]
的字符串文字。在极少数情况下用于表达式时,它们被转换为指向其第一个 char *
.
类型元素的指针
所以实际上您是在尝试将字符与指针进行比较。
您必须使用字符、文字 'R'
、'T
、'C'
而不是字符串文字
所以循环的条件可以看起来像
} while ( a != 'R' && a != 'T' && a != 'C' );
我试图强制用户只能在 R 、 C 或 T 之间进行选择。但是我发表了声明,它一直要求我重新输入一个输入,因为它试图说给定的字母不是其中之一。还要验证我尝试打印 hello 但它没有被打印出来,这意味着该软件仍然停留在 do while 语句。有什么帮助吗? 我的代码:
#include <stdio.h>
int main()
{
char a;
do
{
printf ("Choisit parmis R , C ou T\n");
scanf("%c", &a);
} while (!((a == "R") ||(a == "T") ||(a == "C") ));
printf("hey");
return 0;
}
看到这里有一个很小的问题。我假设您刚刚学习了一种让您感到困惑的语言,例如 python。在 C 中,双引号内的字符串表示字符串,而单引号内的字符串表示字符。检查这个
var c = "C";//This is a string
var c = 'C';//This is a char
所以你正在比较永远不会相等的字符串和字符
至于你的代码,写
#include <stdio.h>
int main()
{
char a;
do
{
printf ("Choisit parmis R , C ou T\n");
scanf("%c", &a);
} while (!((a == 'R') ||(a == 'T') ||(a == 'C') ));
printf("hey");
return 0;
}
您将字符 a 与字符串“R”、“T”和“C”进行比较,这不是您想要的。你想与单个字符进行比较,它是这样写的:
while (!((a == 'R') ||(a == 'T') ||(a == 'C') ));
注意单引号' '用于写字符常量
初学者使用
scanf( " %c", &a );
^^^^^
而不是
scanf( "%c", &a );
^^^^
否则该函数也将读取空格。
"R"
、"T"
、"C"
是类型为 char[2]
的字符串文字。在极少数情况下用于表达式时,它们被转换为指向其第一个 char *
.
所以实际上您是在尝试将字符与指针进行比较。
您必须使用字符、文字 'R'
、'T
、'C'
所以循环的条件可以看起来像
} while ( a != 'R' && a != 'T' && a != 'C' );