[英]Using Delimiters for 'fscanf' in c
我正在尝试以一种可以读取简单变量和值的方式在C中读取文件。 例如,假设这是文件的文本:
a=100
b=hello
c=world
因此,我们的想法是加载文件的每一行,以使等号左侧的字符串成为变量的名称,而右侧的字符串作为值被加载。 这是将按照我描述的方式读取文件的代码:
#include <stdio.h>
int main(void)
{
FILE* f;
f = fopen("test.txt", "r");
char name[256];
char value[256];
while(fscanf(f, "%255[^=]=%255[^=]", name, value) == 2)
printf("%s, %s\n", name, value);
return 0;
}
但是,当我编译并运行它时,输出为:
a, 100
b
我应该提到,我对scanf
或fscanf
中的格式化字符串分隔符的工作方式只有一个非常基本的了解。 我感觉这就是问题所在,但是我还没有找到或偶然发现解决方案。 任何帮助,将不胜感激!
%255[^=]
将读取的所有信息=
第一行到=
在第二行,因为你没有包括换行作为分隔符。 因此,将name
设置为"100\\nb"
。 下一个fscanf()
失败,因为=
之前没有字符串。
使用换行符作为第二个定界符而不是=
,并在第一种格式之前放置一个空格,以便在解析每一行之前跳过空白。
while(fscanf(f, " %255[^=]=%255[^\n]", name, value) == 2)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.