通讯录(C语言、文件保存)

contact.h

#ifndef __CONTACT_H__
#define __CONTACT_H__

#define NAME_LEN 10
#define SEX_LEN 6
#define TELE_LEN 12
#define ADDR_LEN 20
#define MAX_PEO 1000

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 nb[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 save(Pcon pcon);
void read(Pcon pcon);
void init(Pcon pcon);

#endif

contact.c

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include"contact.h"

void add_peo(Pcon pcon)
{
	if (pcon->count <= MAX_PEO)
	{
		printf("请输入姓名:");
		scanf("%s", pcon->nb[pcon->count].name);
		printf("请输入年龄:");
		scanf("%d", &pcon->nb[pcon->count].age);
		printf("请输入性别:");
		scanf("%s", pcon->nb[pcon->count].sex);
		printf("请输入电话:");
		scanf("%s", pcon->nb[pcon->count].tele);
		printf("请输入地址:");
		scanf("%s", pcon->nb[pcon->count].addr);
		pcon->count ++;
		printf("添加成功!\n");
	}
	else
		printf("电话本已满!");
}

void show(Pcon pcon)
{
	int i=0;
	printf("姓名  年龄    性别           电话             地址\n");
	for(i=0;i<pcon->count;i++)
	{
		printf("%s%8d%8s%15s%18s\n",pcon->nb[i].name,pcon->nb[i].age,pcon->nb[i].sex,pcon->nb[i].tele,pcon->nb[i].addr);
	}
}

int find(char *c,Pcon pcon)
{
	int i=0;
	for(;i<pcon->count;i++)
	{
		if(strcmp(c,pcon->nb[i].name)==0)
			return i;

	}
	return -1;
}
void del_peo(Pcon pcon)
{
	char nam[NAME_LEN];
	int index=0;
	printf("请输入你想删除的人:");
	scanf("%s",nam);
	index = find(nam,pcon->nb[index].name);
	for(;index<=pcon->count-1;index++)
	{
		pcon->nb[index]=pcon->nb[index+1];
	}
	pcon->count--;
	printf("删除成功!\n");
}

void search(Pcon pcon)
{
	char nam[NAME_LEN];
	int i=0;
	printf("请输入你想查找的人:");
	scanf("%s",nam);
	i = find(nam,pcon->nb[i].name);
	printf("姓名  年龄    性别           电话               地址\n");
	printf("%s%8d%8s%15s%20s\n",pcon->nb[i].name,
			pcon->nb[i].age,pcon->nb[i].sex,
			pcon->nb[i].tele,pcon->nb[i].addr);
}

void modify(Pcon pcon)
{
	char nam[NAME_LEN];
	int i=0;
	printf("请输入你想修改的人:");
	scanf("%s",nam);
	i = find(nam,pcon->nb[i].name);
	pcon->nb[i] = pcon->nb[-1];
	printf("请输入姓名:");
	scanf("%s", pcon->nb[i].name);
	printf("请输入年龄:");
	scanf("%d", &pcon->nb[i].age);
	printf("请输入性别:");
	scanf("%s", pcon->nb[i].sex);
	printf("请输入电话:");
	scanf("%s", pcon->nb[i].tele);
	printf("请输入地址:");
	scanf("%s", pcon->nb[i].addr);
	printf("添加成功!\n");
}

void clear(Pcon pcon)
{
	pcon->count = 0;
}

void save(Pcon pcon)
{
	int i = 0;
	FILE *pfwrite = fopen("contact.txt","w");

	if(pfwrite == NULL)
	{
		perror("contact.txt");
		exit(EXIT_FAILURE);
	}
	for(i= 0;i<pcon->count;i++)
	{
		fwrite(&(pcon->nb[i]),sizeof(Peo),1,pfwrite);
	}
	fclose(pfwrite);
}

void read(Pcon pcon)
{
	int i = 0;
	FILE *pfread = fopen("contact.txt","r");
	if(pfread == NULL)
	{
		perror("contact.txt");
		exit(EXIT_FAILURE);
	}
	while(fread(&(pcon->nb[i]),sizeof(Peo),1,pfread)==1)
	{
		i++;
	}
	pcon->count = i;
	for(i= 0;i<pcon->count;i++)
	{
		fwrite(&(pcon->nb[i]),sizeof(Peo),1,pfread);
	}
	fclose(pfread);
}

main.c

#include <stdio.h>
#include "contact.h"

void print_menu()
{
	printf("****************************\n");
	printf("*** 1>add       2>del    ***\n");
	printf("*** 3>show      4>search ***\n");
	printf("*** 5>modify    6>clear  ***\n");
	printf("*** 7>save      8>read  ***\n");
	printf("****************************\n");
}

int main()
{
	PCON  con;
	int input = 1;
	con.count = 0;
	while (input)
	{
		print_menu();
		printf("请选择:");
		scanf("%d", &input);
	//	system("cls");
		switch (input)
		{
		case 1:
			add_peo(&con);
			break;
		case 2:
			del_peo(&con);
			break;
		case 3:
			show(&con);
			break;
		case 4:
			search(&con);
			break;
		case 5:
			modify(&con);
			break;
		case 6:
			clear(&con);
			break;
		case 7:
			save(&con);
			break;
		case 8:
			;
			break;
		default:
			break;
		}
	}

	return 0;
}
时间: 2024-10-11 01:10:44

通讯录(C语言、文件保存)的相关文章

如何删除Mac语言文件

语言文件是什么? Mac上几乎每一个应用程序都包含了十多个特定的语言文件,如果不需要这些语言文件,这些文件只会浪费mac空间,我们可以安全地将其从mac上删除. 如何手动清除不必要的mac语言文件? 语言文件保存在苹果上安装的应用程序包内容中.右键点击程序选“显示包内容”,在“Contents/Resources”目录下会看到很多.Iproj文件,这些语言文件的名称有可能是缩写,例如,zh_CN.Iproj就是简体中文语言包,zh_TW.Iproj就是繁体中文语言包等等. 图一:手动删除mac语

C 语言文件操作

1. 数据流:     程序与数据的交互以流的形式进行.fopen 即打开数据流,fclose 即刷新数据流.     所谓数据流,是一种抽象,表示这段数据像流一样,需要逐步接收,不能随机存取:也意味着是一段连续的内容,每块数据之间的顺序是确定的.比如一个很大的文件,不能一次性加载到内存里面,无法直接获取文件任意位置的内容,只能逐渐加载到内存.     比如 TCP 被抽象为 stream 而 UDP 被抽象为 block.     2. 缓冲区:     fopen 时, 磁盘 --> 缓冲区

C语言文件的编译到执行的四个阶段

C语言文件的编译与执行的四个阶段并分别描述 C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接.编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程.链接是把目标文件.操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的过程. 第一个阶段: 是预处理阶段,在正式的编译阶段之前进行.预处理阶段将根据已放置在文件中的预处理指令来修改源文件的内容.如#include指令就是一个预处理指令,它把头文件的内容添加到.cpp

不可或缺 Windows Native (10) - C 语言: 文件

[源码下载] 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 文件 示例cFile.h #ifndef _MYHEAD_FILE_ #define _MYHEAD_FILE_ #ifdef __cplusplus extern "C" #endif char *demo_cFile(char *rootPath); #endif cFile.c /* * 文件 * * 从用户角度讲,文件可分为普通文件和设备文件两种 * 1.普通文件是指保存在磁盘或其它外

C语言文件的读入与写入及C#基础函数学习[图]

C语言文件的读入与写入及C#基础函数学习[图]学了一学期的C语言,还不怎么会使用指针,文件的读入和写入也不能很顺利的写出来,说起来好惭愧.碰巧今天朋友让我帮他编写一个C语言程序,对他数模要用到的大量数据求平均值(每天不同时刻对某一物理量进行检测,持续几十天,求那些时刻测得的物理量的平均值).代码很简单,关键是要掌握怎样对文件进行读入和写入(当然对于菜鸡的我来说,懒惰让我在大一没有好好学习,正好趁着这个契机把文件的基本的操作学会:))分模块来编写还是很重要的,可以使程序看起来简洁明了.写了两个函数

12. Go 语言文件处理

Go 语言文件处理 本章我们将带领大家深入了解一下 Go语言中的文件处理,重点在于文件而非目录或者通用的文件系统,特别是如何读写标准格式(如 XML 和 JSON 格式)的文件以及自定义的纯文本和二进制格式文件. 由于前面的内容已覆盖 Go语言的所有特性,现在我们可以灵活地使用 Go语言提供的所有工具.我们会充分利用这种灵活性并利用闭包来避免重复性的代码,同时在某些情况下充分利用 Go语言对面向对象的支持,特别是对为函数添加方法的支持. Go语言自定义数据文件 对一个程序非常普遍的需求包括维护内

C语言 文件缓冲区

C语言 文件缓冲区 ANSI C标准采用“缓冲文件系统”处理数据文件. 所谓缓冲文件系统是指系统自动地在内存区为程序中每一个正在使用的文件开辟一个文件缓冲区从内存向磁盘输出数据必须先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘去. 如果从磁盘向计算机读入数据,则一次从磁盘文件将一批数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(给程序变量) . 磁盘文件的存取: 磁盘文件,一般保存在硬盘.U盘等掉电不丢失的磁盘设备中,在需要时调入内存 在内存中对文件进行编辑处理后

C语言文件读写操作总结

C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程序就可用此FILE指针来实现对指定文件的存取操作了.当使用打开函数时,必须给出文件名.文件操作方式(读.写或读写),如果该文件名不存在,就意味着建立(只对写文件而言,对读文件则出错),并将文件指针指向文件开头.若已有一个同名文件存在,则删除该文件,若无同名文件,则建立该文件,并将文件指针指向文件开头. fopen(char

C#代码实现把网页文件保存为mht文件

MHT叫“web单一文件”.顾名思义,就是把网页中包含得图片,CSS文件以及HTML文件全部放到一个MHT文件里面.而且浏览器可以直接读取得. 由于项目需要,需实现把指定的网页文件保存为mht文件.于是到网上搜索了相关的资料.找到了一份代码.测试后通过. 现将实现过程记录如下: Step 1:项目引用文件: 安装目录/System32/cdosys.dll(c:/windows/System32/cdosys.dll),这样,将增加两个命名空间:ADODB, CDO. Step 2:放一个按钮b

C语言文件操作函数的编写

 编写文件操作的头文件 /************************************************************************** Copyright(C)    :2014-08-5 toto Filename       :file.h Author          :涂作权 Version         :V1.1 Date            :2014-08-05 Description     :文件操作的头文件 Others