gpt4 book ai didi

c - 在C中读取未知格式的文件

转载 作者:行者123 更新时间:2023-11-30 16:21:48 25 4
gpt4 key购买 nike

我需要一些关于 C 语言练习 的帮助。

我想知道如何从我不知道其格式的文件中读取数据。

-该文件将包含 int(1-999) 和 char:“OL”=重载,“ND”=noData, “LB”=低电量。

示例:

My_file.txt

可以这样制作:

25
764
OL
ND
34
LB
624
235
ND
........

或者像这样:

534 ND 356 LB LB 234 765 123 ND ND......
235 976 LB 156 ND......

我知道这个:

   FILE *f;
char str1;
f=fopen(filename,"r");
str1=fgetc(f);
while(str1 != EOF)
{
printf("%c",str1);
str1=fgetc(f);
}
fclose(f);

可以读取文件直到EOF。但我无法使用它,因为我需要将这些值分配给某些 int 或字符...(如果我使用 enum 会怎样?)

我确信我无法使用fscanf。但真正的问题是:如何读取文件,以及如何将这些值分配给 struct 或其他东西......这样我就可以使用它们进行操作(例如求和等)。

非常感谢你们...

最佳答案

 I don't know it's format

嗯..在我看来,您完全知道格式:

The file will contain int(1-999) and char: "OL"=overloaded, "ND"=noData, "LB"=lowBattery

您的文件包含空格分隔的标记序列,每个标记都是 OL、ND、LB 或指定范围内的整数。

因此,要解析该文件,一次读取一个字符。空白?忽略并继续下一步。一个数字?现在应该还有 2 位数字。读取它们并转换为整数。 'O''N' 还是'L'?寻找下一个字符是否正确。其他一切?解析错误!

要保存每个 token ,请创建一个如下结构:

struct Token
{
enum
{ TokenOverLoad
, TokenNoData
, TokenLowBattery
, TokenData
} kind;
short data; // only if kind == TokenData
};

然后在解析期间将它们存储在列表或动态数组中。之后,您可以迭代该列表/数组来实现任何所需的函数,例如 sum ...

关于c - 在C中读取未知格式的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54724004/

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