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