繁体   English   中英

在C中读取文件未知格式

[英]reading file unknown format in C

我需要用C language进行此练习的帮助。

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

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

例:

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或chars ...(如果我使用enum怎样?)

我确定我不能使用fscanf 但是真正的问题是:我如何读取文件,以及如何将这些值分配给struct或其他内容……因此,我可以将它们用于操作(例如sum和更多)。

非常感谢你们...

我不知道它的格式

嗯..在我看来,您确切地知道格式:

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

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

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

要保存每个令牌,请创建类似以下的结构:

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

然后在解析过程中将它们存储在列表或动态数组中。 之后,您可以遍历该列表/数组以实现所有必需的功能,例如sum ...

我问一个朋友。 他说我可以使用fscanf

我只需要定义一个带有字符的struct

使用fscanf我将读取%s并将它们添加到char char_name[20];

如果我愿意,我可以将atoi/atof用作数字或将strcmp用作字符。

如果有人知道另一种最简单的解决方案。 请回答:)很快我将发布代码,进行处理:)

暂无
暂无

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

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