首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我使用stdbool.h时,当我在scanf中使用%d时,为什么会出现错误?

当我使用stdbool.h时,当我在scanf中使用%d时,为什么会出现错误?
EN

Stack Overflow用户
提问于 2022-04-19 23:11:04
回答 1查看 35关注 0票数 -1

有时,我在练习编码时使用stdbool.h。此时,如果将扫描f的格式修饰符指定为%d,则会发生以下错误消息。

c:\project\hello\hello\hello.c(11):警告C4477:'scanf‘:格式字符串'%d’需要一个类型为'int *‘的参数,但变量参数3具有'bool’类型。

它似乎是编译的,但在运行时它似乎没有正确地识别true/false或0/1输入。我想知道我是不是错过了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-19 23:39:18

您正在将一个bool (或_Bool)传递给scanf。使用%d时,应该传递int的地址。

如果您的bool名为x,那么请使用:

代码语言:javascript
复制
int temporary;
if (1 != scanf("%d", &temporary))
{
    fprintf(stderr, "Error, scanf did not work as expected.\n");
    exit(EXIT_FAILURE);
}
x = temporary;

(对于exit,在源代码中插入#include <stdlib.h>。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71932326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档