我编写了一个通用函数,用于解析配置字符串中的双精度浮点数值。当需要读取两个值时,提供解析包含这两个值的文本行的函数一个定界字符串
当我使用
我可以考虑使用
delim_str
,以知道如何分隔这两个值。我首先通过sprintf(fmt, "%%lg%s%%lg", delim_str)
创建格式字符串fmt
,然后使用它进行解析,即sscanf(input_string, fmt, &v1, &v2)
。当我使用
delim_str
例如" - "
或", "
时一切正常,但是当我尝试使用它来解析屏幕分辨率时,使用"x"
作为分隔符会出现问题。它可以将输入字符串1920x1080
正确解析为两个值,但如果第一个值为0,则0x1080
会给我一个v1
值为4224(将0x1080
解释为十六进制值),而v2
不会被修改。我可以考虑使用
strstr
在输入字符串中查找delim_str
的起始位置,然后使用它创建两个新字符串,每个变量对应一个字符串,但我感觉应该有更优雅的方法。
strtok
。 - kiran Biradar%lg
来解析整数而不是%d
呢? - melpomene%i
可以扫描十六进制和八进制数,但%d
不能。 - Weather Vane