sscanf是否支持布尔类型?

sscanf是否支持布尔类型?,c,scanf,C,Scanf,我想从字符串中得到一个布尔值。字符串如下所示: char *s = "value=TRUE"; 该值可以是TRUE、FALSE、TRUE或FALSE 我想知道是否有一个格式说明符可以直接从字符串中获取布尔值?我不需要传递字符串,然后推导布尔值 我在找这样的东西 bool x; sscanf(s,"value=%b",&x); 问题是。是否可以使用sscanf和格式说明符直接获取布尔值 如果没有,有没有快速的方法 编辑: 基于响应,没有直接的格式说明符 这里介绍了一种直接获取布尔值的快

我想从字符串中得到一个布尔值。字符串如下所示:

char *s = "value=TRUE";
该值可以是
TRUE
FALSE
TRUE
FALSE

我想知道是否有一个格式说明符可以直接从字符串中获取布尔值?我不需要传递字符串,然后推导布尔值

我在找这样的东西

bool x;
sscanf(s,"value=%b",&x);
问题是。是否可以使用sscanf和格式说明符直接获取布尔值

如果没有,有没有快速的方法

编辑:

基于响应,没有直接的格式说明符

这里介绍了一种直接获取布尔值的快速方法

char b[8];
if ( sscanf(s,"value=%[TtRrUuEe]",b))
   return TRUE;
else
   return FALSE;
我知道上述方法是有限的。如何改善它

注意:如果值字符串包含垃圾,则默认值为False。简短回答为“否”

您可以获取GNUC-library的源代码,并自行更改

f、 e


不,您必须将值读取到**char,然后将已读取的值小写,并使用strcmp()将其与“true”进行比较。如果匹配,则会影响bool变量的true。

您的意思是“glibc”吗?有“glib”和“glibc”,它们是不同的。我想借此机会指出,
bool
不是typedef。这会崩溃。您必须为字符串说明符分配存储数据的空间。这还将匹配类似于
s
(保留后面的
s
)的内容,而不仅仅是
true
的所有大小写变体。我知道这就是我在这里寻找改进格式说明符的原因
mysscanf(char *buf, char *format, ...)
{
  // scan the format for %b and change it to %s and 
  // redirect the equivalent paramter-variable
  // to a char * buffer
  // then analyse the buffer and write the boolean value into the original parameter
}
char b[8];
if ( sscanf(s,"value=%[TtRrUuEe]",b))
   return TRUE;
else
   return FALSE;