如何读取字符串直到两个连续的空格?
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
当然,当我输出 paramname
和 constantvalue
时,我得到:
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.
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
当然,当我输出 paramname
和 constantvalue
时,我得到:
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.