我有以下结构
struct
{
char order;
int row;
int column;
int length;
char printChar;
}record;
Run Code Online (Sandbox Code Playgroud)
我的文件看起来像这样
F
30
40
7
X
Run Code Online (Sandbox Code Playgroud)
我如何使用fread将文件存储在结构中?我的文件是否正确显示或所有组件是否需要单行?
小智 7
如果我理解正确,你会问你是否能做到
struct record r;
fread(file, &r, sizeof(r));
Run Code Online (Sandbox Code Playgroud)
或者你被迫使用
struct record r;
fread(file, &r.order, sizeof(r.order));
Run Code Online (Sandbox Code Playgroud)
如果这是你的问题,那么答案是:你必须逐个读取字段,因为struct成员之间可能存在填充.或者,如果您使用与GNU兼容的编译器,您可以通过将结构声明为"packed"来指示它不要包含任何填充:
struct record {
// ...
} __attribute__((packed));
Run Code Online (Sandbox Code Playgroud)
但除非绝对必要,否则不建议这样做(不便携).
另外,您的文件真的是二进制文件吗?如果没有,您应该注意换行符并将数字从文本转换为实际数值.
| 归档时间: |
|
| 查看次数: |
8677 次 |
| 最近记录: |