在一串其他字符中查找数字的最有效方法是什么?

P.S*_*.S. 0 c linux string algorithm parsing

任意长度的3个数字的字符串 - 嵌入在空格和制表符中,下面用\t标记表示:

123456789 \t 12345 \t6789\n
Run Code Online (Sandbox Code Playgroud)

数字之间可以有任何空间和标签的数量和组合.

例如,这也是有效的:

1    \t \t2\t\t\t\t\t \n3\n  
Run Code Online (Sandbox Code Playgroud)

提取3个数字的最有效方法是什么?

看看sscanf()但似乎需要字符串的确切格式,这是正确的吗?

谢谢.

Chr*_*odd 5

最明显/最简单的是sscanf:

if (sscanf(buffer, "%d%d%d", &v1, &v2, &v3) == 3) {
    /* extracted 3 numbers successfully */
Run Code Online (Sandbox Code Playgroud)

%d格式说明跳过空白(包括\t\n字符),所以变量多余的东西并不重要.它也会跳过空格,这可能是也可能不是你想要的.

  • @PS:是的,它跳过当前语言环境定义为空格的任何字符.这总是包括空格,制表符,回车符和换行符,并且可能包含其他内容(例如,UTF-8语言环境中的各种类型的unicode空格) (3认同)