sscanf是否支持布尔类型?

时间:2012-12-10 12:43:39

标签: c scanf

我想从字符串中获取一个布尔值。字符串看起来像这样:

char *s = "value=TRUE";

值可以是TRUEFALSEtruefalse

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

我正在寻找类似的东西

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

如果没有,是否有快速方法?

修改

根据回复,没有直接的格式说明符。

这里有一个快速方法来获取布尔值directelly

char b[8];
if ( sscanf(s,"value=%[TtRrUuEe]",b))
   return TRUE;
else
   return FALSE;

我知道上述方法有限。如何改善它?

注意:如果值字符串包含垃圾

,则默认值为False

3 个答案:

答案 0 :(得分:2)

简短的回答是“不”。

您可以获取GNU C库的源代码并自行更改。

f.e。

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
}

答案 1 :(得分:0)

char b[8];
if ( sscanf(s,"value=%[TtRrUuEe]",b))
   return TRUE;
else
   return FALSE;

答案 2 :(得分:0)

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