我有一个基于具有不同信息的结构的程序。 在此程序中,您可以例如添加人员和删除人员等。我已经完成了所有这些工作,因此程序本身就已完成。但是文件不是。
因此,如果要添加一个人,我将尝试编写一个“保存”的代码,而当我选择退出程序时,这将“保存”。以及在程序开始时将“人员”“恢复”到文件中的代码。
有人有任何想法或提示吗?我是编程和尝试学习的新手。我已经坐了几天了。 在“还原”之前,我要求打开一个文件,如果该文件不存在,则会创建一个新文件,并且可以正常工作。因此,如果我有一个由3名员工组成的文件,并且要打开此文件,我希望将其还原,然后能够向该文件中添加更多员工,等等。
答案 0 :(得分:1)
您必须分两个步骤来编写(和读取):首先是该结构,然后是该结构所指向的数组。 用于编写的代码片段(但是,没有错误检查,但这是必需的):
#include <stdio.h>
// ...
employees emp;
const char* filename="your_filename";
// populate emp;
FILE* file = fopen(filename,"w");
fwrite(&emp,sizeof(employees),1,file);
fwrite(emp.pic,sizeof(int),emp.imageCount,file);
fclose(file);
现在,文件中的结构后面有数组。用相同的方式阅读它:
FILE* file = fopen(filename,"r");
fread(&emp,sizeof(employees),1,file);
emp.pic=calloc(sizeof(int), emp.imageCount);
fread(emp.pic,sizeof(int),emp.imageCount,file);
请不要忘记检查错误(请参见man fopen|fread|fwrite|calloc
)。如果您有多个结构,则必须对任何元素重复两个步骤。
答案 1 :(得分:0)
什么是平台?对于Windows,.INI
文件的格式简单,内容如下:
[Employee_1]
id=123
name=Smith
imageCount=2
...
您可以使用GetPrivateProfileString
/ GetPrivateProfileInt
和WritePrivateProfileString
API函数来读取和存储信息。为每个员工使用单独的部分。需要一个公共部分来存储员工部分的数量。