📅  最后修改于: 2023-12-03 15:34:51.369000             🧑  作者: Mango
在 C 语言中,scanf
是一个非常常用的函数,用于从输入流中读取数据。对于布尔值(即 true
或 false
),scanf
的用法可能会让一些程序员感到困惑。本文将介绍如何正确使用 scanf
读取布尔值,并提供一些示例代码。
在 C 语言中,布尔值通常用整型表示,其中 0
表示 false
,非零值表示 true
。因此,在读取布尔值时,可以使用 %d
格式字符串读取整数,并使用一个整型的变量存储结果。例如:
#include <stdio.h>
int main(void) {
int b_val;
printf("Enter a boolean value (0 or 1): ");
scanf("%d", &b_val);
if (b_val) {
printf("You entered true.\n");
} else {
printf("You entered false.\n");
}
return 0;
}
在上面的代码中,scanf
使用 %d
格式字符串读取整数,并将结果存储在 b_val
变量中。然后,程序将根据 b_val
变量的值输出相应的结果。
注意,在上面的示例代码中,if (b_val)
的作用是检查 b_val
是否为非零值,如果是,则表示用户输入的是 true
。如果用户输入的是 false
,则 b_val
将为 0,此时 if
语句的结果为假,程序将输出 “You entered false.”。
在某些情况下,用户可能更倾向于输入字符串值而不是整数值。例如,用户可以输入字符串 "true" 或 "false",而不是整数值 1 或 0。在这种情况下,程序员可以读取字符串值并将其转换为布尔值。
为了将字符串转换为布尔值,可以使用 strcmp
函数将字符串与 “true” 进行比较,并将结果存储在布尔类型的变量中。例如:
#include <stdio.h>
#include <string.h>
int main(void) {
char input[16];
printf("Enter a boolean value (true or false): ");
scanf("%s", input);
int b_val = strcmp(input, "true") == 0;
if (b_val) {
printf("You entered true.\n");
} else {
printf("You entered false.\n");
}
return 0;
}
在上面的代码中,scanf
使用 %s
格式字符串读取输入字符串,将其存储在 input
数组中。使用 strcmp
函数比较 input
和 "true" 是否相等,并将结果存储在 b_val
变量中。
在 C 语言中,可以使用 scanf
函数读取布尔值。如果用户输入的是整数,可以使用整型变量存储结果,并检查变量是否为非零值以确定用户输入的是 true
还是 false
。如果用户更愿意输入字符串,可以读取字符串并将其转换为布尔值,例如,使用 strcmp
函数将字符串与 “true” 进行比较,并将结果存储在布尔类型的变量中。