gpt4 book ai didi

c - 解析具有特定关键字匹配的文本文件

转载 作者:太空宇宙 更新时间:2023-11-04 04:03:04 25 4
gpt4 key购买 nike

我需要用 C 语言创建一个搜索程序,它可以解析文本文件并找到关键字 x="value"。然后我想在数组中创建一个值(value)项目列表。目前我正在使用 fscanf 方法,这是我的代码片段。



fscanf(fp, "%s", buf);
if !strcmp(buf, "x")
{
fscanf(fp, "%s", buf);
if ( ! strcmp(buf, "="))
fscanf(fp, "%s", buf);
else
printf("\n Not a valid format");
}

我不想使用 fscanf,还有其他方法可以满足我的要求吗??
谢谢。

最佳答案

还有其他方法(例如,您可以使用 Flex),但我认为使用 sscanf 稍微好一点最有意义的是:

char buffer[256];
char value[128];

fgets(buffer, sizeof(buffer), fp);

if (1==sscanf(buffer, "x=%127s", value))
// we read a value -- now use it however needed.

编辑:这里的基本思想非常简单。我们首先阅读整个 fgets .然后我们使用 sscanf尝试匹配 x=<whatever>在那一行。如果我们找到它,我们就有了我们关心的值(value)。如果我们没有找到它,sscanf 将返回 0,因为它返回它转换的项目数——如果它不匹配 x=我们指定,它不会转换任何东西,所以 sscanf 将返回 0,我们知道该行不匹配。

编辑 2:这是一个小的演示程序,它从文件中读取数据,并打印出 x=<whatever> 之后的行的值。 , x 前后允许有空格和 = :

#include <stdio.h>

int main() {

FILE *infile = fopen("Somefile.txt", "r");

char buffer[256];
char value[128];

while (fgets(buffer, sizeof(buffer), infile))
if (1 == sscanf(buffer, " x = %127s", value))
printf("Value = %s\n", value);
return 0;
}

我用这个作为输入测试了它:

some junk
#a comment
a = 1 ; a couple other variables.
b = 2
x = 3
x = 4
x=5

我得到的结果是:

Value = 3
Value = 4
Value = 5

关于c - 解析具有特定关键字匹配的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9528753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com