Jan*_*roň 1 c string parsing scanf
我们有这个代码
char input[] = "key: value";
char key[32], value[32];
sscanf(input, "%31[^:]:%*[ ]%31s", key, value);
Run Code Online (Sandbox Code Playgroud)
之后可以有零个或多个空格:
,我想将key ond值存储到c-string变量中.上面的代码可以使用一个或多个空格,但零空格的运气很难.
有一种简单的方法来解析这样的字符串吗?不一定是sscanf,但我想避免使用正则表达式.
编辑
我找到了一个支持已接受答案的参考文献(这是一个有用但非直观的功能):
该函数将读取并忽略在下一个非空白字符之前遇到的任何空白字符(空白字符包括空格,换行符和制表符 - 请参阅isspace).格式字符串中的单个空格验证从流中提取的任何数量的空白字符(包括无).
只是用"%31[^:]:%31s"
.
所述%s
转换规格跳过反正前导空白,并在后一个或多个非毛坯第一坯料停止.
如果您决定在第二个字段中需要空白,而不是前导空白,则使用:
"%31[^:]: %31[^\001]"
Run Code Online (Sandbox Code Playgroud)
(假设你的字符串不太可能包含你感兴趣的控件-A字符).格式字符串中的空白跳过零个或多个空格(严格地说,零个或多个空格字符).