gpt4 book ai didi

C - 根据格式读入文件

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

我正在尝试在 c 中读取特定文件格式的文件。
该文件包含一些数据项。每个数据项都由一个标志分隔。该文件应如下所示:

file-header: "FIL0"file-id: 0x1020304flag : 0|1 : uint8_tlength : uint32_tchar[length] : int utf-8so its: [File-Header] [FileID] [Flag | Length | Data ] [Flag | Length | Data] ...
--> "FIL0" | 0xFFFFFF | 0 or 1 | Data as char[] | 0 or 1 | ... (next data item) ....

My Problem occurs when reading in the file. My idea is to open the file and scan through it using some sscanf-magic.

FILE *fp;
fp = fopen("data.dat". "r");
/* scan file for data components */

while (fgets(buffer, sizeof buffer, fp) != NULL) /* read in file */
{
/* scan for sequence */
if (sscanf(buffer, "%5s", fil0_header) == 1) /* if the "FIL0" header is found */
{
printf("FIL0-header found: %s\n", buffer);

// proceed and scan for [FLAG] [LENGTH] [DATA]
// sscanf()
if (sscanf(buffer, "%u", node) == 1)
{
// doesnt seem to work
}

// read in length of string and extract stringdata

else
{
printf("FIL0-Header not found, found instead: %s\n", buffer);
// do something
}
}

我的问题是我很难处理缓冲区和文件中的不同数据类型。

fil0-header 的比较工作正常,但是:

  • 如何读取下一个十六进制数(使用 %D 的 sscanf)
  • 如何扫描 1 个字节的标志
  • 如何提取4个字节的长度

一个问题是,标志的检查从缓冲区的开头开始。但在找到 FIL0 header 后,指针应该继续移动。
如果有任何帮助,我将不胜感激!

请帮我找到合适的 sscanf() -调用:

并想读入它并检索我的文件的单个部分:在单个 [File-Header] 上和许多{[FileID] [Flag |长度 |数据]} {...} 项

最佳答案

好吧,你可以使用

按字节读取文件
 line[0] = (char) fgetc(fp);
line[1] = (char) fgetc(fp);

等等,或者省略强制转换以检索一个 int 值...应该可以轻松地从右到左扫描文件(或行 - 正如您所说的那样没有任何换行符).. .

关于C - 根据格式读入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7967465/

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