ReadFromFile 函数用于从文件中读取通讯录信息并存储到结构体数组中。
#include <stdio.h>
#include <stdlib.h>
#define N 100
struct AList {
int id;
char name[20];
char tel[11];
};
int ReadFromFile(struct AList* alists, char* file_name)
{
FILE* fp;
int i = 0;
fp = fopen(file_name, "r");
if (fp == NULL)
{
printf("error");
exit(EXIT_FAILURE);
}
while (!feof(fp))
{
fscanf(fp, "%d %s %s", &alists[i].id, alists[i].name, alists[i].tel);
i++;
}
fclose(fp);
return 1;
}
sort 函数用于根据姓名对通讯录结构体数组进行排序。
void sort(struct AList *alists, int num) {
int i, j;
struct AList temp;
for (i = 0; i < num - 1; i++) {
for (j = 0; j < num - 1 - i; j++) {
if (strcmp(alists[j].name, alists[j + 1].name) > 0) {
temp = alists[j];
alists[j] = alists[j + 1];
alists[j + 1] = temp;
}
}
}
}
search 函数用于查询指定姓名的电话号码。
void search(struct AList *alists, int num, char *name) {
int i;
for (i = 0; i < num; i++) {
if (strcmp(alists[i].name, name) == 0) {
printf("找到了 %s 的电话号码:%s\n", alists[i].name, alists[i].tel);
return;
}
}
printf("没有找到 %s 的电话号码\n", name);
}
WriteToFile 函数用于将排序后的通讯录信息写入文件。
void WriteToFile(struct AList *alists, char *file_name, int num) {
FILE *fp;
int i;
fp = fopen(file_name, "w");
if (fp == NULL) {
perror("Error opening file");
return;
}
for (i = 0; i < num; i++) {
fprintf(fp, "%d%s%s\n", alists[i].id, alists[i].name, alists[i].tel);
}
fclose(fp);
}
【C语言】文件结构体结合
最新推荐文章于 2024-08-15 10:12:07 发布