将yes或no转换为特殊代码的布尔格式

时间:2017-05-31 22:08:43

标签: c

我需要制作一个程序,要求用户输入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');

我一直在苦苦挣扎,所以请帮助我!

1 个答案:

答案 0 :(得分:3)

发布的代码中存在许多错误。 #define bool p错误,因为它将bool重新定义为p的宏。同样,#define y 1#define n 0没有按照您的想法执行,但定义了用y和{替换源代码中n1的出现次数的宏分别为{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()