C-如何将sscanf与格式化字符串一起使用?
我有一个字符串,我成功地将其格式化如下(是的,空格不一致): 我可以轻松地将字符C-如何将sscanf与格式化字符串一起使用?,c,C,我有一个字符串,我成功地将其格式化如下(是的,空格不一致): 我可以轻松地将字符|更改为任何其他字符 我希望以这种方式分配每个文本: char city;=>布拉格 字符天气;=>晴朗的 等等 我试着像这样使用sscanf:sscanf(输入“|%s | |%s |”,城市,天气)但它不起作用 知道我做错了什么吗?也许一些正则表达式会有帮助 我得到的错误结果是: Prague, ���� Prague, ���� Prague, ���� .... 试用 char * 而不是 char 煤
|
更改为任何其他字符
我希望以这种方式分配每个文本:
char city;=>布拉格
字符天气;=>晴朗的
等等
我试着像这样使用sscanf:sscanf(输入“|%s | |%s |”,城市,天气)代码>但它不起作用
知道我做错了什么吗?也许一些正则表达式会有帮助
我得到的错误结果是:
Prague, ����
Prague, ����
Prague, ����
....
试用
char *
而不是
char
煤焦
只有一个字符,但您需要一个指针。这是因为两个|之间有一个空格
通过添加%*[^ |]
,可以忽略第一个结尾
和第二个开头
之间的任何字符,这意味着:“忽略所有字符,直到找到
sscanf(输入“|%s |%*[^ |]|%s |”,城市,天气);
但是,如果可以有两个或多个单词,则应使用与%s
不同的说明符:
sscanf(输入,“|%[^ |][124;%*[^ |][124;]%[^ |][124;]”,城市,天气);
必须得到的编译器警告应该指出其中一半的问题。另一部分是,%s
格式说明符读取由空格分隔的字符串,因此它与“纽约”这样的多个单词不匹配“。您可以使用包含字符集,请参见scanf
。sscanf
中的%s
匹配任何非空白字符,如果您的城市有一个字符,它将失败,或者您必须使用regex
,或者编写您自己的解析器很简单。sscanf(输入,“|%s |%*[^ |]]s |,”,城市,天气)工作,但只有当有多个单词时,才有可能对其进行修改,使其能够使用一个或多个单词:)有个打字错误。检查我更新的最后一行
char