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

2023-12-26

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

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

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

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


Use 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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从具有可变长度记录的二进制文件中读取 的相关文章

随机推荐