首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将文件映射到结构数组的有效方法是什么?

将文件映射到结构数组的有效方法是什么?
EN

Stack Overflow用户
提问于 2015-09-14 14:21:58
回答 2查看 80关注 0票数 1

我的系统里有一个1024行的文件,

student_db.txt

代码语言:javascript
复制
    Name   Subject-1  Subject-2  Subject-3
    -----  ---------  ---------  ---------
    Alex     98         90         80
    Bob      87         95         73
    Mark     90         83         92
    ....     ..         ..         ..
    ....     ..         ..         ..

我的C代码中有一个数组结构,

代码语言:javascript
复制
typedef struct
{
  char name[10];
  int  sub1;
  int  sub2;
  int  sub3;
} student_db;

student_db  stud_db[1024];

读取这个文件并映射到这个结构数组的有效方法是什么?

如果条目数量较少,那么我们可以在带有fgetswhile中使用普通的strtok,但是这里的条目数是1024

因此,请提出一些有效的方法来完成这项任务。

EN

回答 2

Stack Overflow用户

发布于 2015-09-14 14:31:51

  1. 检查一下文件的大小,我想是最大的。100 KByte。这实际上是没有意义的,即使是一个写得不好的PHP脚本也可以在某个毫秒内读取它。没有缓慢的方法来加载如此少量的数据。
  2. 我想,加载这个文件只是第一步,真正的任务是处理这个列表(搜索、筛选等)。与其优化加载速度,不如将重点放在处理速度上。
  3. 过早的优化是有害的。做一个未优化的代码,看看你对结果和速度是否满意。也许你永远不应该优化它。
票数 5
EN

Stack Overflow用户

发布于 2015-09-15 12:46:46

您可以尝试以二进制方式存储数据。现在写文件的方式是字符方式。所以一切都被表示为一个字符(数字、字符串和其他东西)。

如果您存储的东西二进制,那么它意味着您存储数字,字符串和其他东西的方式,所以当你写整数的文件,你写一个数字,当你打开这个在文本编辑器稍后,然后你会看到字符,哪个对应的数字在例如。ASCII是您写到文件中的文件。

您可以使用标准函数以二进制方式存储事物:

代码语言:javascript
复制
fopen("test.bin","wb");

w代表写,b代表二进制格式。编写的功能是:

代码语言:javascript
复制
fwrite(&someInt, sizeof(someInt), 1, &someFile);

如果someInt是您想要写入的变量(函数取指针),那么file of (SomeInt)表示的是int元素的大小,如果第一个参数是数组,而someFile是要存储数据的文件,则1表示元素的数量。

这样可以减少文件的大小,所以文件的加载也会更快。在文件中处理sata也更简单

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32567241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档