c - 我如何阅读带有 fread 的列表?
问题描述
这可能吗,这里有什么问题!?
我需要它来读取属于“Orcamento”一个节点内的“项目”列表,以及“决定”列表。
int lerDadosO(DLLIST3 *orcamentos) {
int nOrcamentos = 0, i = 0;
ORCAMENTO Orcamento;
FILE *ficheiro = fopen("dadosO.bin", "rb");
if(ficheiro != NULL) {
fseek(ficheiro, 0L, SEEK_END);
nOrcamentos = ftell(ficheiro) / sizeof(ORCAMENTO);
rewind(ficheiro);
while (i != nOrcamentos) {
Orcamento.itens = createI();
Orcamento.decisores = createU();
fread(&Orcamento, sizeof(ORCAMENTO), 1, ficheiro);
// viewI(Orcamento.itens, listarItem);
if(insertendO(orcamentos, Orcamento) != 0) {
printf("Ocorreu um Erro!");
return 0;
}
i++;
}
fclose(ficheiro);
}
else {
printf("Não existe nenhum ficheiro binário!");
}
return nOrcamentos;
}
解决方案
我不确定您是如何实现列表系统的,这可以通过首先将数据读取到缓冲区来完成,而不是将其转换为“列表”
struct record {
int field0
int field1;
};
int main(void) {
// variables
FILE *stream; // reading data
struct record data[length]; // writing data
struct mylisttype *list; // result
...
// read `length` `struct record`s from `stream`
fread(data, sizeof(struct record), length, stream);
listfrombuffer(buffer, list);
...
}
推荐阅读
- sql - 如果员工 1 计数 = 员工 2 计数,则打印计数最低的那个
- c++ - ESP32:异步倒数
- css - 选择器超出选择器最大特异性
- sql - SQL (ANSII) 中窗口函数中的 CASE 表达式
- ballerina - 访问结果集而不将其转换为 Json 或 XML ballerina.io
- sql - MSSQL 为每条记录选择前 2 名
- javascript - 赛普拉斯拦截与 url 不匹配
- python - SQLAlchemy Marshmallow 返回空 JSON Flask
- python - 使用 Python 分割 JSON 文件的最简单方法
- javascript - 棘手的“for”循环的输出?