此函数从以方括号开头和结尾的输入消息中提取包含的消息,并将其插入out。
因此,如果输入= [消息],则输出=消息
int stringInsideSquareBracket(const char *in,char *out)
{
/*
%*[^[] read and discard everything until it finds a square bracket
[ read and discard the first square bracket
%[^]] read and store up up to (but not including) the closing square bracket
%*[^\n] read and discard up to (but not including) the newline
*/
return sscanf(in, "%*[^[][%[^]]%*[^\n]", out);
}
我遇到的问题出现在类型为[12. 0; 34.0;78.0],函数没有插入输出,我想不通。
1条答案
按热度按时间uemypmqf1#
我遇到的问题出现在类型为[12. 0; 34.0;78.0]。该函数不会在
out
中插入任何内容扫描
"%*[^[]"
部分失败,因为未从"[12.0;34.0;78.0]"
扫描任何内容。扫描随后停止。sscanf()
返回0,不幸的是,代码在使用out
之前未检查返回值。保存时间,检查返回值。
高级:
在不知道目标大小的情况下保存到目标是糟糕的代码设计。
考虑
strchar()
,而不是使用sscanf()
。