我有一个具有可变长度记录的二进制文件,如下所示:
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(使用前将#替换为@)