gpt4 book ai didi

c - 从具有可变长度记录的二进制文件中读取

转载 作者:行者123 更新时间:2023-12-02 01:23:03 24 4
gpt4 key购买 nike

我有一个具有可变长度记录的二进制文件,如下所示:

12  economic10
13 science5
14 music1
15 physics9
16 chemistry9
17 history2
18 anatomy7
19 physiology7
20 literature3
21 fiction3
16 chemistry7
14 music10
20 literature1

类(class)名称是文件中唯一的可变长度记录,第一个数字是类(class)代码,可以是1到9999之间的数字,第二个数字是部门,可以是1之间的数字和 10。正如您在文件中看到的那样,类(class)名称和部门编号之间没有空格。

问题是如何读取二进制文件?文件中没有字段告诉我类(class)名称字符串的大小是多少。我可以很好地读取第一个 int(类(class) ID),但是我如何知道类(class)名称的大小是多少?

最佳答案

使用 fscanf() 和格式字符串 "%u %[a-z]%u"

这是一个完整的示例程序:

#include <stdio.h>

#define NAME_MAX 64

int main(int argc, char ** argv)
{
FILE * file = fopen("foo.txt", "rb");
unsigned int course, department;
char name[NAME_MAX];

while(fscanf(file, "%u %[a-z]%u", &course, name, &department) != EOF)
{
// do stuff with records
printf("%u-%u %s\n", department, course, name);
}

fclose(file);

return 0;
}

关于c - 从具有可变长度记录的二进制文件中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/835417/

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