fscanf() 可以读取空格吗?

标签 c string file-io

我已经有了一些使用 fscanf() 读取文本文件的代码,现在我需要修改它,以便以前无空格的字段需要允许空格。文本文件基本上是这样的形式:

title: DATA
title: DATA
etc...

这是基本上使用fgets(inputLine, 512, inputFile) 解析的; sscanf(inputLine, "%*s %s", &data);,读取DATA字段并忽略标题,但现在部分数据字段需要允许空格。我仍然需要忽略标题和紧随其后的空格,然后读入该行的其余部分,包括空格。

有没有办法用 sscanf() 函数做到这一点?

如果不是,我可以对代码进行哪些最小更改以正确处理空格?

更新:我编辑了问题,将 fscanf() 替换为 fgets() + sscanf(),这是我的代码实际使用的。当我第一次写这个问题时,我真的不认为它是相关的,这就是为什么我将它简化为 fscanf()。

最佳答案

如果您不能使用 fgets(),请使用 %[ 转换说明符(带有“排除选项”):

char buf[100];
fscanf(stdin, "%*s %99[^\n]", buf);
printf("value read: [%s]\n", buf);

但是 fgets() 更好。


编辑:带有 fgets() + sscanf() 的版本

char buf[100], title[100];
fgets(buf, sizeof buf, stdin); /* expect string like "title: TITLE WITH SPACES" */
sscanf(buf, "%*s %99[^\n]", title);

关于fscanf() 可以读取空格吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1950057/

相关文章:

c - 如何修复多字符常量警告

javascript - 为什么我的 for 循环没有递增,为什么我的拼接没有被改变?

java - 使用特殊编码将 Java String 写入文件

Java.io.File - 无法在 Android 上重命名和移动文件

c - 添加自定义机器时 Qemu 配置不正确

c - OpenGL 的颜色发生了什么变化?

c - 使用 qsort() 对结构指针数组进行排序时程序崩溃

java - 获取Java中定义的String的实际长度

c++ - 读取字符串时发生核心转储?

python - 如何使用python检查文件夹是否是快捷方式?