我已经有了一些使用 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/