我在使用C std99中定义在<stdbool.h>
头文件中的bool数据类型。现在我想要用户提供输入。我需要在scanf中使用什么格式说明符来从用户输入一个字节大小的布尔值,然后在我的程序中进行操作。
您可以使用"%d"格式说明符来读取用户输入的整数值并将其存储在bool变量中。由于bool类型具有1字节大小,因此可以使用以下代码:
bool myBool;
scanf("%d", &myBool);
我在使用C std99中定义在<stdbool.h>
头文件中的bool数据类型。现在我想要用户提供输入。我需要在scanf中使用什么格式说明符来从用户输入一个字节大小的布尔值,然后在我的程序中进行操作。
您可以使用"%d"格式说明符来读取用户输入的整数值并将其存储在bool变量中。由于bool类型具有1字节大小,因此可以使用以下代码:
bool myBool;
scanf("%d", &myBool);
没有。
使用临时对象,因为 _Bool
的大小依赖于实现。
#include <stdbool.h>
#include <stdio.h>
bool b;
int temp;
scanf("%d", &temp);
b = temp;
你实际上的问题不是关于bool
的说明符,因为在人类语言中没有"bools"(这可能是你的输入)。人类语言知道字符、数字和更多内容。对于这些,我们有格式说明符。
实际问题是你的布尔值如何显示在你的输入中:
根据你的输入,你需要选择一个匹配的格式说明符。然后区分两个布尔值。
以下是1
和0
作为布尔表示在你的输入中的示例:
bool b;
int i;
printf("1/0:\n");
scanf("%d", &i);
if (i) {
b = 1;
} else {
b = 0;
}
如果输入为2
,它将被视为1
。因此,如果您想进行严格的实现,则需要进行错误检查/处理,以确保输入中只有1
或0
。
免责声明:scanf() 不安全且存在安全漏洞,请勿使用!这个示例只是一个演示如何将输入转换为布尔值的方法。
没有直接从用户那里获取布尔值输入的方法。但是,我们可以使用临时变量和if-else if语句来从用户那里获取输入,并将其存储为布尔值。
以下是具体步骤:
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
int main() {
bool x;
int temp;
char y[5];
printf("Enter Boolean Input True or False: - \n");
scanf("%s", &y);
if(strcmp(y, "True") == 0){
temp = 1;
}
else if(strcmp(y, "False") == 0){
temp = 0;
}
x = temp;
printf("%d", x);
return 0;
}
你可以在这张图片中看到输出结果
if
语句是错误的。布尔值(无三态)只能有两个值。因此,只需要一个if
来区分两个值。第二个if
在逻辑上是多余的。 - reichharttemp
是不必要的。直接将 x
赋值即可。 - reichhart