如何读取字符串直到两个连续的空格?

How to read string until two consecutive spaces?

scanf()函数一个众所周知的功能就是可以传一个格式,根据这个格式扫描输入

就我而言,我似乎无法通过搜索 this and this 文档找到解决方案。

我有一个字符串 (sInput) 如下:

#something VAR1 this is a constant string     //some comment

其中 VAR1 是常量字符串的名称 this is a constant.

现在我像这样扫描这个字符串:

if(sscanf(sInput, "%*s %s %s", paramname, constantvalue) != 2)
   //do something

当然,当我输出 paramnameconstantvalue 时,我得到:

VAR1
this

但我想让 constantvalue 包含字符串,直到找到两个连续的空格(因此它会包含 this is a constant string 部分)。

因此我尝试了:

sscanf(sInput, "%*s %s %[^(  )]s", paramname, constantvalue)
sscanf(sInput, "%*s %s %[^  ]s", paramname, constantvalue)

但没有运气。有没有办法用 sscanf() 实现我的目标?或者我应该实现另一种存储字符串的方式?

scanf family of functions 适用于简单的解析,但不适用于像您看起来做的更复杂的事情。

可以可能通过使用例如strstr to find the comment starter "//", terminate the string there, and then remove trailing space.