gpt4 book ai didi

c - 用 C 语言解析具有多个相似 block 的文件

转载 作者:行者123 更新时间:2023-11-30 15:51:31 27 4
gpt4 key购买 nike

我有一个具有以下格式的文件:

abc dca
2
aa bb
casca casss

abc dca
3
aa bb
casca casss
casca casss

abcd abcd
0

基本上它是按 block 进行的(在前面的示例中将有 3 个 block )。一个特定的 block 是:

abc dca
2
aa bb
casca casss

在所有情况下,我们都会:
第一行:始终用空格分隔两个单词。
第二行:一个数字

从这里开始,我们将拥有与之前数量一样多的行,并且每行始终包含两个单词。

如何解析文件,以便对于每个 block 我都可以调用一个函数,传递一些我用在 block 中找到的内容计算的内容?

最佳答案

使用最小状态机:

#include <stdio.h>
#include <string.h>

int main(int qrgc, char **argv)
{
char buff[111];
char one[10], two[10];
char left[10], right[10];
int num;
size_t len;
int state,rc;

state =0;

while(fgets (buff, sizeof buff, stdin)) {
len = strlen (buff);
while (len && buff[len-1] == '\n') buff[--len] = 0;
switch (state) {
case 0:
rc = sscanf(buff, "%s %s", left, right);
if (rc < 2) goto quit;
state=1;
break;
case 1:
rc = sscanf(buff, "%d", &num);
if (rc < 1) goto quit;
state=2;
break;
default:
if (!len) {state = 0; continue; }
rc = sscanf(buff, "%s %s", one, two);
if (rc < 2) goto quit;
break;
}
}
quit: ;
return 0;
}

关于c - 用 C 语言解析具有多个相似 block 的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15043927/

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