2015-06-22 87 views
3

一个众所周知的scanf()功能的功能是可以传递的格式根据该格式进行扫描输入。如何读取字符串,直到两个连续的空格?

对于我的情况,我似乎无法找到搜索thisthis文档的解决方案。

我有一个字符串(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()实现我的目标?或者我应该实施另一种存储字符串的方式吗?

+1

你*是否使用['sscanf'](http://en.cppreference.com/w/c/io/fscanf)?请记住''%[“'格式不是正则表达式格式,它只是列出一组*字符。 –

+0

@JoachimPileborg不,我没有,但它似乎最容易给我。 – moffeltje

+0

我不认为这可以用'sscanf'完成。 –

回答

3

scanf family of functions像你似乎做的是好简单的解析,而不是更复杂的东西。

可以可能通过使用例如解决问题strstr找到注释启动"//",终止字符串那里,然后删除尾随space

+1

好吧,这似乎回答我的问题,并感谢你的例子。让我们建立! – moffeltje

相关问题