c - 从二进制文件中读取非固定长度(C)

标签 c binary

我是新来的,我需要一些帮助。 :)

我正在开发一个必须写入和读取二进制文件的程序。我必须向其中添加讲座,它们看起来像:

COURSECODE;COURSENAME;MAXAPPLICANTS;ACTUALAPPLICANTS;

我可以使用 char* 毫无问题地将其写入文件。

我的问题是:如果记录的大小不固定,我如何在结构中读回它? (例如:coursename可以是Linear Algebra or Analysis -> length is non-determined)我还需要修改实际申请人数,如何找到它的字符位置,以及当前行?

我对想法很满意,我也很欣赏任何源代码,我用 C++ 编程,而 C 对我来说是一个艰难的退步。

提前致谢!

最佳答案

你的结构看起来像

struct student {
char *coursecode;
char *coursename;
char *max_applicants;
char *actual_applicants;
};

只需将另一个成员添加到您的结构中,比如存储结构总大小的 int size

每次当你从二进制文件中读取时,你应该首先读取 4 个字节 你会得到记录的完整大小,然后查看记录中有多少字符,读取那么多并通过 ; 你会找到你的记录。

关于c - 从二进制文件中读取非固定长度(C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15242800/

相关文章:

c - ASCII 到二进制表示形式(大端)

c++ - 如何让 XCode 6 在调用 Debugger() 时不停止执行?

c - 我收到一条错误,指出 "warning: assignment makes integer from pointer wit hout a cast [enabled by default]"

c - 我的代码有什么问题

Python:需要帮助拆分二进制代码的输入,没有空格

binary - 设计(二进制)文件格式时有哪些要点?

c - 如何将 execlp 更改为 execv 并运行其他命令然后只是 'ls'

c - 我想开始嵌入式设备编程(如果像我这样的人可能的话)

file - 文本文件和二进制文件有什么区别。您如何决定何时使用什么?

user-interface - iTunes Connect 开发者拒绝 - 删除不需要的构建/二进制文件