Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C-如何将sscanf与格式化字符串一起使用?_C - Fatal编程技术网

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