C语言程序设计【二】

1、利用 I /O 系统实现简单通讯录程序

Code:
  1. /*============================================================*/  
  2. /*  Program:                                                  */  
  3. /*      利用 I/O 操作完成一个简单的通讯录                   */  
  4. /*============================================================*/  
  5.   
  6. #include <stdio.h>   
  7. #include <stdlib.h>   
  8. #include "comm.h"   
  9.   
  10. #define MAX 100   
  11.   
  12. struct addr   
  13. {   
  14.     char name[20];                          /*  姓名  */  
  15.     char street[40];                        /*  街道  */  
  16.     char city[20];                          /*  城市  */  
  17.     char state[6];                          /*  国家  */  
  18.     unsigned long zip;                      /*  邮编  */  
  19. }addr_list[MAX];   
  20.   
  21. /* ------------------------------------- */  
  22. /*  主程序进行调用                      */  
  23. /* ------------------------------------- */  
  24.   
  25. void main()   
  26. {   
  27.     char choice;   
  28.     init_list();   
  29.     while(1)   
  30.     {   
  31.         choice = menu_select();   
  32.         switch(choice)   
  33.         {   
  34.             case 1: enter();   
  35.                 break;   
  36.             case 2: dele();   
  37.                 break;   
  38.             case 3: list();   
  39.                 break;   
  40.             case 4: save();   
  41.                 break;   
  42.             case 5: load();   
  43.                 break;   
  44.             case 6: exit(0);   
  45.                 break;   
  46.         }   
  47.     }   
  48. }   
  49.   
  50. /* ------------------------------------- */  
  51. /*  初始化操作                            */  
  52. /* ------------------------------------- */  
  53.   
  54. void init_list(void)   
  55. {   
  56.     register int i;   
  57.     for(i=0;i<MAX;i++)   
  58.         addr_list[i].name[0]='/0';   
  59. }   
  60.   
  61. /* ------------------------------------- */  
  62. /*  输入信息操作                       */  
  63. /* ------------------------------------- */  
  64.   
  65. void enter(void)   
  66. {   
  67.     int slot;   
  68.     char str[80];   
  69.   
  70.     slot = find_free();   
  71.   
  72.     if(slot == -1)   
  73.         printf("/nList Full");   
  74.   
  75.     printf("Enter name: ");   
  76.     gets(addr_list[slot].name);   
  77.     printf("Enter street: ");   
  78.     gets(addr_list[slot].street);   
  79.     printf("Enter city: ");   
  80.     gets(addr_list[slot].city);   
  81.     printf("Enter state: ");   
  82.     gets(addr_list[slot].state);   
  83.     printf("Enter Zip: ");   
  84.     gets(str);   
  85.     addr_list[slot].zip = strtoul(str,'/0',10);   
  86. }   
  87.   
  88. /* ------------------------------------- */  
  89. /*  删除信息操作                       */  
  90. /* ------------------------------------- */  
  91.   
  92. void dele(void)   
  93. {   
  94.     register int slot;   
  95.     char str[80];   
  96.   
  97.     printf("Enter record #: ");   
  98.     gets(str);   
  99.     slot = atoi(str);   
  100.        
  101.     if(slot>=0 && slot<MAX)   
  102.         addr_list[slot].name[0] = '/0';   
  103. }   
  104.   
  105. /* ------------------------------------- */  
  106. /*  显示文件中信息                      */  
  107. /* ------------------------------------- */  
  108.   
  109. void list(void)   
  110. {   
  111.     register int i;   
  112.     for(i=0;i<MAX;i++)   
  113.     {   
  114.         if(addr_list[i].name[0])   
  115.         {   
  116.             printf("%s/n",addr_list[i].name);   
  117.             printf("%s/n",addr_list[i].street);   
  118.             printf("%s/n",addr_list[i].city);   
  119.             printf("%s/n",addr_list[i].state);   
  120.             printf("%u/n/n",addr_list[i].zip);   
  121.         }   
  122.     }   
  123.     printf("/n/n");   
  124. }   
  125.   
  126. /* ------------------------------------- */  
  127. /*  保存信息到文件中                     */  
  128. /* ------------------------------------- */  
  129.   
  130. void save(void)   
  131. {   
  132.     FILE *fp;   
  133.     register int i;   
  134.   
  135.     if((fp=fopen("file","wb"))==NULL)   
  136.         printf("Cannot open file./n");   
  137.   
  138.     for(i=0;i<MAX;i++)   
  139.         if(*addr_list[i].name)   
  140.             if(fwrite(&addr_list[i],sizeof(struct addr),1,fp)!=1)   
  141.                 printf("File write error./n");   
  142.     fclose(fp);   
  143. }   
  144.   
  145. /* ------------------------------------- */  
  146. /*  从文件中加载信息                     */  
  147. /* ------------------------------------- */  
  148.   
  149. void load(void)   
  150. {   
  151.     FILE *fp;   
  152.     register int i;   
  153.   
  154.     if((fp=fopen("file","rb"))==NULL)   
  155.         printf("Cannot open file./n");   
  156.        
  157.     init_list();   
  158.   
  159.     for(i=0;i<MAX;i++)   
  160.         if(fread(&addr_list[i],sizeof(struct addr),1,fp)!=1)   
  161.         {   
  162.             if(feof(fp))   
  163.                 break;   
  164.             printf("File read error./n");   
  165.         }   
  166.     fclose(fp);   
  167. }   
  168.   
  169. /* ------------------------------------- */  
  170. /*  菜单选择功能函数                     */  
  171. /* ------------------------------------- */  
  172.   
  173. int menu_select(void)   
  174. {   
  175.     char str[80];   
  176.     int c;   
  177.     printf("1. Enter a name/n");   
  178.     printf("2. Delete a name/n");   
  179.     printf("3. list the file/n");   
  180.     printf("4. Save the file/n");   
  181.     printf("5. Load the file/n");   
  182.     printf("6. Quit/n");   
  183.     do  
  184.     {   
  185.         printf("/nEnter your choice: ");   
  186.         gets(str);   
  187.         c = atoi(str);   
  188.     }while(c<0||c>6);   
  189.   
  190.     return c;   
  191. }   
  192.   
  193. /* ------------------------------------- */  
  194. /*  找到空闲的位置                      */  
  195. /* ------------------------------------- */  
  196.   
  197. int find_free(void)   
  198. {   
  199.     register int i;   
  200.     for(i=0;addr_list[i].name[0]&&i<MAX;i++) ;   
  201.         if(i==MAX)   
  202.             return -1;   
  203.     return i;   
  204. }  


 2、常用时间函数
  

Code:
  1. /*====================================================*/  
  2. /*  Program:                                          */  
  3. /*      常用时间函数                                */  
  4. /*====================================================*/  
  5.   
  6. #include <time.h>   
  7. #include <stdio.h>   
  8.   
  9. int main()   
  10. {   
  11.     struct tm *local;   
  12.     time_t tm;   
  13.     tm = time(NULL);                        /* time()返回系统的当前日历时间 */  
  14.     local = localtime(tm);        /* localtime()返回指向tm 的指针 */  
  15.     printf("Local time and date: %s/n",asctime(local));/* asctime()返回指向一个串的指针*/  
  16.     local = gmtime(tm);         /* gmtime()返回指针tm 的指针    */  
  17.     printf("UTC time and date %s/n",asctime(local));           
  18.     return 0;   
  19. }   
  20.   
  21.   
  22. /*================================================================================  
  23.  
  24.     各时间函数原型如下:  
  25.       
  26.       time_t time(time_t *time)  
  27.  
  28.       struct tm *localtime(const time_t *time)  
  29.  
  30.       char *asctime(const struct tm *ptr)  
  31.  
  32.       struct tm *gmtime(const time_t *time) 时间用UTC表示,若系统不支持,返回空  
  33. ==================================================================================*/  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值