arrays - 使用c将结构数据数组追加和删除到文件中
问题描述
我正在尝试使用结构数组执行一些操作,例如添加、删除、追加数据到 C 语言的文件中。这是我的结构。
struct S_info
{
char title[50];
char sName[50];
int rMm;
int rDd;
int rYy;
int rating;
bool deleteSong;
};
而且我能够使用结构将数据添加到文件中。这是添加数据的代码。
for (int i = 0; i < n; i++)
{
printf("Title: ");
scanf("%s", &title);
printf("\nName of the Song: ");
.....................
strcpy(s[i].title, title);
strcpy(s[i].sName, sName);
s[i].rMm = rMm;
...........
fwrite(&s[i], sizeof(struct S_info), 1, outfile);
}
但问题是,每当我添加新数据时,以前的数据都会从文件中删除。因此,我需要创建一个函数,该函数将使用结构数组将新数据附加到文件中。我还想创建另一个将删除的函数。
为了删除数据,我尝试了一种方法,我在结构中创建了一个 bool 变量来帮助我删除数据。但我不喜欢代码。我在互联网上搜索使用结构附加数据,但我没有找到任何好的解决方案,删除数据也发生了同样的事情。我需要的是使用结构数组将新数据追加和删除到文件中。
解决方案
您可以在打开输出文件时查看,使用“打开”功能可以使用很多有用的选项,(您可以在“打开”手册中找到它);O_APPEND 是这些选项之一,它允许您在文件中已经存在的数据之后写入文件,所以我认为这就是您想要的
推荐阅读
- python - 类似于 group by for 列表的操作
- oracle - print white square box in downloaded csv from interactive report
- html - Cannot resize SVG icon neither using w/height or viewBox
- django - Django REST 框架。APITestCase。如何修复'bad_value、referenced_table_name、referenced_column_name'
- python-3.x - 如何计算odoo 12中两个日期之间的差异
- docker - Docker: create database schema on image build is not working
- arduino - Serial communication with Arduino Uno in hexadecimal, and monitoring response with serial monitor
- python-3.x - 网页抓取 Innerhtml
- c++ - 为什么这段代码用 g++ 而不是 MSVC++ 编译?
- c# - 为什么在控制台应用程序中使用 CommonOpenFileDialog 时会出现此异常?