如何删除文件中的结构体
时间: 2023-11-08 13:10:14 浏览: 38
要删除文件中的结构体,需要先打开文件并读取其内容,然后找到包含结构体的行,并将其从文件中删除。以下是一个示例程序,演示如何删除文件中的特定结构体:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Person {
char name[50];
int age;
};
int main() {
FILE *fp;
char filename[] = "persons.txt";
struct Person p1, p2;
int found = 0;
// 打开文件以读取
fp = fopen(filename, "r");
if (fp == NULL) {
printf("无法打开文件\n");
exit(1);
}
// 读取文件中的每一行
while (fgets((char *)&p1, sizeof(p1), fp) != NULL) {
// 检查当前行是否包含特定结构体
if (strcmp(p1.name, "John") == 0 && p1.age == 25) {
found = 1;
continue; // 跳过当前结构体
}
// 将当前结构体写入新文件
fwrite((char *)&p1, sizeof(p1), 1, fp2);
}
// 关闭文件
fclose(fp);
// 删除原文件并重命名新文件
remove(filename);
rename("temp.txt", filename);
if (found == 1) {
printf("已删除结构体\n");
} else {
printf("未找到结构体\n");
}
return 0;
}
```
在上面的示例中,我们首先打开名为“persons.txt”的文件以进行读取。然后,我们使用fgets()函数逐行读取文件内容,并使用strcmp()函数检查每个结构体是否符合要求。如果找到了特定的结构体,我们将设置一个标志并跳过当前结构体。否则,我们使用fwrite()函数将当前结构体写入新文件“temp.txt”中。完成循环后,我们关闭原文件并删除它,然后重命名新文件为原始文件名。最后,我们输出一个消息,指示是否已找到并删除了结构体。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)