在写文件通讯录之前,大家应该对fread和fwrite函数有所了解,这篇博客有对fread和fwrite的介绍,希望大家在看文件通讯录之前了解一下:https://blog.csdn.net/cdatreides/article/details/80763141
#ifndef __CONTACT_H__ #define __CONTACT_H__ #include <stdlib.h> #include <stdio.h> #define NAME_LEN 20 #define SEX_LEN 5 #define TELE_LEN 12 #define ADDR_LEN 20 #define MAX_PEO 1000 #pragma warning(disable:4996) typedef struct Peo { char name[NAME_LEN]; int age; char sex[SEX_LEN]; char tele[TELE_LEN]; char addr[ADDR_LEN]; }PEO, *PPEO; typedef struct Contact { PEO dhb[MAX_PEO];//存储人的信息 int count;//记录有效个数 }PCON, *Pcon; void add_peo(Pcon pcon); void del_peo(Pcon pcon); void search(Pcon pcon); void modify(Pcon pcon); void show(Pcon pcon); void clear(Pcon pcon); void init(Pcon pcon); void save(Pcon pcon); #endif
#include<string.h> #include"contact.h" int find(char *p, Pcon pcon) { int i = 0; for (; i < pcon->count; i++) { if (strcmp(pcon->dhb[i].name, p) == 0) return i; } return -1; } void add_peo(Pcon pcon) { if (pcon->count < MAX_PEO) { printf("请输入姓名、年龄、性别、电话、住址:\n"); scanf("%s", pcon->dhb[pcon->count].name); scanf("%d", &pcon->dhb[pcon->count].age); scanf("%s", pcon->dhb[pcon->count].sex); scanf("%s", pcon->dhb[pcon->count].tele); scanf("%s", pcon->dhb[pcon->count].addr); } pcon->count++; printf("存储成功\n"); } void del_peo(Pcon pcon) { int i = 0; int ret = 0; char name[10]; printf("请输入要删除的名字:\n"); scanf("%s", name); ret = find(name, pcon); if (ret == -1) { printf("无此联系人\n"); } else for (i = ret; i < pcon->count - 1; i++) { pcon->dhb[i] = pcon->dhb[i + 1]; } pcon->count--; printf("删除成功\n"); } void search(Pcon pcon) { int i = 0; int ret = 0; char name[10]; printf("请输入要查找人的名字:\n"); scanf("%s", name); ret = find(name, pcon); if (ret == -1) { printf("无此联系人\n"); } else { printf("姓名:%10s\t", pcon->dhb[i].name); printf("年龄:%10d\t", pcon->dhb[i].age); printf("性别:%10s\t", pcon->dhb[i].sex); printf("电话:%10s\t", pcon->dhb[i].tele); printf("住址:%10s\t", pcon->dhb[i].addr); printf("\n"); } } void modify(Pcon pcon) { int i = 0; int ret = 0; char name[10]; printf("请输入要查找人的名字:\n"); scanf("%s", name); ret = find(name, pcon); printf("请输入姓名、年龄、性别、电话、住址:\n"); scanf("%s", pcon->dhb[i].name); scanf("%d", &pcon->dhb[i].age); scanf("%s", pcon->dhb[i].sex); scanf("%s", pcon->dhb[i].tele); scanf("%s", pcon->dhb[i].addr); printf("修改成功\n"); } void show(Pcon pcon) { int i = 0; for (; i <pcon->count; i++) { printf("姓名:%10s\t", pcon->dhb[i].name); printf("年龄:%10d\t", pcon->dhb[i].age); printf("性别:%10s\t", pcon->dhb[i].sex); printf("电话:%10s\t", pcon->dhb[i].tele); printf("住址:%10s\t", pcon->dhb[i].addr); printf("\n"); } } void clear(Pcon pcon) { pcon->count = 0; } void init(Pcon pcon) { int i = 0; FILE *pfread = fopen("myfile.txt", "rb"); if (pfread == NULL) { perror("contact.txt"); exit(EXIT_FAILURE); } while (fread(&(pcon->dhb[i]), sizeof(PEO), 1, pfread) == 1) { i++; } pcon->count = i; fclose(pfread); } void save(Pcon pcon) { int i = 0; FILE *pfwrite = fopen("myfile.txt", "wb"); if (pfwrite == NULL) { perror("contact.txt"); exit(EXIT_FAILURE); } for (i = 0; i<pcon->count; i++) { fwrite(&(pcon->dhb[i]), sizeof(PEO), 1, pfwrite); } fclose(pfwrite); }
#include "contact.h" void print_menu() { printf("*************************************\n"); printf("*****1:add 2:del******\n"); printf("*****3:search 4:modify***\n"); printf("*****5:show 6:clear****\n"); printf("************* 7:save ****************\n"); printf("*************************************\n"); } int main() { PCON con; int input = 1; con.count = 0; init(&con); while (input) { print_menu(); printf("请选择操作:\n"); scanf("%d", &input); switch (input) { case 1: add_peo(&con); break; case 2: del_peo(&con); break; case 3: search(&con); break; case 4: modify(&con); break; case 5: show(&con); break; case 6: clear(&con); break; case 7: save(&con); break; default: break; } } system("pause"); return 0; }