我需要制作一个程序,要求用户输入y或n作为布尔值:这就是我的意思:
#include<stdbool.h>
#define bool p
#define y 1
#define n 0
do {
/*some code*/
printf("do you want to continue?! y/n");
scanf("%B",&p);
}while (p=='y');
我一直在苦苦挣扎,所以请帮助我!
答案 0 :(得分:3)
发布的代码中存在许多错误。 #define bool p
错误,因为它将bool
重新定义为p
的宏。同样,#define y 1
和#define n 0
没有按照您的想法执行,但定义了用y
和{替换源代码中n
和1
的出现次数的宏分别为{1}}。
标准C(或我所知道的任何其他C)中没有0
转换说明符。并且%B
获取未定义变量的地址。
考虑将变量&p
定义为cont
,并根据用户输入更改其值以控制循环:
bool
此处,当用户输入#include <stdio.h>
#include <stdbool.h>
int main(void)
{
bool cont = false;
char input;
do {
printf("Do you want to continue (y/n)? ");
scanf(" %c", &input);
if (input == 'y' || input == 'Y') {
cont = true;
} else {
cont = false;
}
} while (cont);
return 0;
}
或cont
时,true
仅为y
。另请注意Y
格式字符串开头的空格:scanf()
。这会导致" %c"
跳过输入流中可能位于输入流中的前导空格(包括换行符)(例如之前调用scanf()
所留下的空格。
请注意,更好的代码会检查scanf()
返回的值,或者使用scanf()
和fgets()
代替sscanf()
,更仔细地验证输入。
示例互动:
scanf()