adbk.c

来自「自己做的常用库和实现的数据结构。public domain.」· C语言 代码 · 共 157 行

C
157
字号
#include "adbk.h"#define MEM(X) if( ((X)=malloc(sizeof(ADBK))) == NULL ) { \			fprintf(stderr, "Mem alloc failed\n"); \			exit EXIT_FAILURE; }static void print_usage_adbk(void);static void print_version(void);int main(void){	int ch;	print_version();	while(1) {		do {			print_usage_adbk();			scanf("%d", &ch);		} while(ch<0 || ch>5);		switch(ch) {			case 1:				print_adbk();				break;			case 2:				creat_adbk();				break;			case 3:				delete_adbk();				break;			case 4:				edit_record();				break;			case 0:				exit(EXIT_SUCCESS);		}	}	return EXIT_SUCCESS;}void print_adbk(void){	FILE *fp;	if( (fp=fopen("default.add","rw")) == NULL) {		fprintf(stderr, "File open error...\n");		exit(EXIT_FAILURE);	}	edit_record(fp);}void creat_adbk(void){}void delete_adbk(void){}void edit_record(FILE *fp){	int ch;	while(1) {		do {			print_usage_record();			scanf("%d", &ch);				} while(ch<0 || ch>6);		switch(ch) {			case 1:				print_record(fp);				break;			case 2:				add_record(fp);				break;			case 3:				delete_record();				break;			case 4:				sort_record();				break;			case 5:				search_record();				break;			case 0:				return;		}	}	}static void print_record(FILE *fp) {	int ch;	while( (ch=fgetc(fp)) != EOF ) {		putchar(ch);	}	fclose(fp);}static void add_record(FILE *fp) {	ADBK *p;	int i,t;	MEM(p);	puts("Input new SN:");	scanf("%d", &p->sn);	printf("Input new name: [MAX characters: %d\n]", NAME_MAX);	for(i=0; i<NAME_MAX && (t=getchar()) != '\n'; i++) {		p->name[i] = t;	}	getchar();	do {		puts("Input sex, M / F:");		p->sex = toupper(getchar());		getchar();	} while( p->sex != 'M' || p->sex != 'F');	printf("Input new phone number: [MAX characters: %d\n]", PHONE_MAX);	for(i=0; i<NAME_MAX && (t=getchar()) != '\n'; i++) {		p->phone[i] = t;	}	getchar();	printf("Input new address: [MAX characters: %d\n]", ADDR_MAX);	for(i=0; i<NAME_MAX && (t=getchar()) != '\n'; i++) {		p->addr[i] = t;	}	getchar();}static void print_usage_adbk(void) {	printf("%s%s%s%s%s%s",	"available choices are:\n",	"	    1	 print available adbks\n",	"	    2	 creat new adbk\n",	"	    3	 delete existing adbk\n",	"	    4	 edit record(s) in current adbk\n",	"	    0	 quit\n");}static void print_usage_record(void) {	printf("%s%s%s%s%s%s",	"available choices are:\n",	"	    1	 print current record(s)\n",	"	    2	 add new record\n",	"	    3	 delete a record\n",	"	    4	 sort all record(s)\n",	"	    5	 search for a record\n",	"	    0	 quit\n");}static void print_version(void) {	printf("%s%s%s",		"Addressbook utility 0.1\n",		"Released under GNU GPL v2 or later.\n",		"Written by Cyril Hu.\n\n");}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?