gpt4 book ai didi

c - 如何使用 sscanf() 函数获取字符串的一部分?

转载 作者:行者123 更新时间:2023-11-30 15:21:57 26 4
gpt4 key购买 nike

目前我正在学习一本 C 书,但无法完成一项练习。鉴于我此时花费了超过 1 天的时间,我需要一些帮助/想法。

"Assume that str is a string that contains a "sales rank" immediately preceded by the # symbol(other characters may precede the # and/or follow the sales rank). A sales rank is a series of decimal digits possibly containing commas, such as the following examples:

989
24,675
1,162,620

Write a call of sscanf that extracts the sales rank (but not the # symbol) and stores it in a string variable named sales_rank."

据我所知,它是必要的:

例如,如果我们有:

     char *str = "ana are mer2,1#3lala";

sales_ranks 应为:“2,1”

如果:

     char *str = "ana ar#e mer2,1a3lala";

sales_ranks 是一个空字符串。

我在这里(http://cboard.cprogramming.com/c-programming/149330-getting-part-string-sscanf.html)找到了一些有用的信息,但这不是正确的解决方案。他们以错误的方式解释了这个练习,如下所示:

     char *str = "ana are mer2,1#3lala";

sales_ranks 是“3”,这是可以的,但不是作者所要求的:“销售排名”前面紧跟 # 符号

编辑:

我误解了谁在谁前面。 :| (所以链接中暴露的解决方案是可以的)

其实我花了这么多时间来寻找这种模式的解决方案:“{十进制}#”:)

but it is possible and so? I mean if it is possible that: # symbol immediately preceded by the "sales rank"

最佳答案

您可以将 sscanf 与 %[]%* 语法结合使用来实现此目的:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
char sales_rank[200];
char *str;

sales_rank[0] = 0;
str = "ana are mer2,1#3lala";

sscanf(str, "%*[^#]#%199[0-9,]", sales_rank);
printf("sales_rank=%s\n", sales_rank);

return 0;
}

%*[^#] 将跳过 # 之前的字符,忽略它们和 %199[0-9,] 将 sales_rank 字符串存储在变量中。匹配过程将在读取 sales_rank 后停止。任何附加字符都将被忽略。

关于c - 如何使用 sscanf() 函数获取字符串的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29416951/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com