我的系统里有一个1024行的文件,
student_db.txt
Name Subject-1 Subject-2 Subject-3
----- --------- --------- ---------
Alex 98 90 80
Bob 87 95 73
Mark 90 83 92
.... .. .. ..
.... .. .. ..我的C代码中有一个数组结构,
typedef struct
{
char name[10];
int sub1;
int sub2;
int sub3;
} student_db;
student_db stud_db[1024];读取这个文件并映射到这个结构数组的有效方法是什么?
如果条目数量较少,那么我们可以在带有fgets的while中使用普通的strtok,但是这里的条目数是1024。
因此,请提出一些有效的方法来完成这项任务。
发布于 2015-09-14 14:31:51
发布于 2015-09-15 12:46:46
您可以尝试以二进制方式存储数据。现在写文件的方式是字符方式。所以一切都被表示为一个字符(数字、字符串和其他东西)。
如果您存储的东西二进制,那么它意味着您存储数字,字符串和其他东西的方式,所以当你写整数的文件,你写一个数字,当你打开这个在文本编辑器稍后,然后你会看到字符,哪个对应的数字在例如。ASCII是您写到文件中的文件。
您可以使用标准函数以二进制方式存储事物:
fopen("test.bin","wb");w代表写,b代表二进制格式。编写的功能是:
fwrite(&someInt, sizeof(someInt), 1, &someFile);如果someInt是您想要写入的变量(函数取指针),那么file of (SomeInt)表示的是int元素的大小,如果第一个参数是数组,而someFile是要存储数据的文件,则1表示元素的数量。
这样可以减少文件的大小,所以文件的加载也会更快。在文件中处理sata也更简单
https://stackoverflow.com/questions/32567241
复制相似问题