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 + -
显示快捷键?