c - sscanf : skip any number of given chars

标签 c scanf

我想在从 char 数组读取之前跳过任何分号或换行符。我写了这样的代码:

char[] buf;
// buf initialized
double val = 0.0;
sscanf(buf, "%[;\n]%lf", &val);

但是如果buf开头没有分号或者换行符就不行了。我如何更改该代码以仅在它们存在时跳过这两个字符?

编辑:sscanf(buf, "%*[;\n]%lf", &val); 也不起作用。

测试样本buf值:“67.445906;20.239875;89.577929;6.350902;7.788324\n19.806513;69.875179;”

edit2:我阅读了C++ reference ,在关于说明符的部分中,“除 %n 外,任何说明符至少应使用一个字符。否则匹配失败,扫描到此结束。”

最佳答案

您必须使用*。 * 表示丢弃读取的内容,不要将其存储在输出变量中。 [...] 表示读取与方括号之间的字符匹配的任何字符序列。这是一个例子:

sscanf(buf, "%*[;\n]%lf", &val);

关于c - sscanf : skip any number of given chars,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19367427/

相关文章:

c - 如何在C中60秒后关闭服务器套接字

c - 多个字符数组的输入不起作用

c - 如何在 C 中使用 scanf() 读取负 double ?

c- 获取输入后的奇怪行为

c - 如何扫描文件中的某些字符

python - 用 C 嵌入 Python

c - 在 c 中放置字符串(ascii 值)时切换大小写操作

c - 定义预处理器宏 swap(t, x, y)

c - 阻止进程执行某些系统调用

c - 扫描异常行为