繁体   English   中英

在C中对'fscanf'使用分隔符

[英]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

我应该提到,我对scanffscanf中的格式化字符串分隔符的工作方式只有一个非常基本的了解。 我感觉这就是问题所在,但是我还没有找到或偶然发现解决方案。 任何帮助,将不胜感激!

%255[^=]将读取的所有信息=第一行到=在第二行,因为你没有包括换行作为分隔符。 因此,将name设置为"100\\nb" 下一个fscanf()失败,因为=之前没有字符串。

使用换行符作为第二个定界符而不是= ,并在第一种格式之前放置一个空格,以便在解析每一行之前跳过空白。

while(fscanf(f, " %255[^=]=%255[^\n]", name, value) == 2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM