1、利用 I /O 系统实现简单通讯录程序
- /*============================================================*/
- /* Program: */
- /* 利用 I/O 操作完成一个简单的通讯录 */
- /*============================================================*/
- #include <stdio.h>
- #include <stdlib.h>
- #include "comm.h"
- #define MAX 100
- struct addr
- {
- char name[20]; /* 姓名 */
- char street[40]; /* 街道 */
- char city[20]; /* 城市 */
- char state[6]; /* 国家 */
- unsigned long zip; /* 邮编 */
- }addr_list[MAX];
- /* ------------------------------------- */
- /* 主程序进行调用 */
- /* ------------------------------------- */
- void main()
- {
- char choice;
- init_list();
- while(1)
- {
- choice = menu_select();
- switch(choice)
- {
- case 1: enter();
- break;
- case 2: dele();
- break;
- case 3: list();
- break;
- case 4: save();
- break;
- case 5: load();
- break;
- case 6: exit(0);
- break;
- }
- }
- }
- /* ------------------------------------- */
- /* 初始化操作 */
- /* ------------------------------------- */
- void init_list(void)
- {
- register int i;
- for(i=0;i<MAX;i++)
- addr_list[i].name[0]='/0';
- }
- /* ------------------------------------- */
- /* 输入信息操作 */
- /* ------------------------------------- */
- void enter(void)
- {
- int slot;
- char str[80];
- slot = find_free();
- if(slot == -1)
- printf("/nList Full");
- printf("Enter name: ");
- gets(addr_list[slot].name);
- printf("Enter street: ");
- gets(addr_list[slot].street);
- printf("Enter city: ");
- gets(addr_list[slot].city);
- printf("Enter state: ");
- gets(addr_list[slot].state);
- printf("Enter Zip: ");
- gets(str);
- addr_list[slot].zip = strtoul(str,'/0',10);
- }
- /* ------------------------------------- */
- /* 删除信息操作 */
- /* ------------------------------------- */
- void dele(void)
- {
- register int slot;
- char str[80];
- printf("Enter record #: ");
- gets(str);
- slot = atoi(str);
- if(slot>=0 && slot<MAX)
- addr_list[slot].name[0] = '/0';
- }
- /* ------------------------------------- */
- /* 显示文件中信息 */
- /* ------------------------------------- */
- void list(void)
- {
- register int i;
- for(i=0;i<MAX;i++)
- {
- if(addr_list[i].name[0])
- {
- printf("%s/n",addr_list[i].name);
- printf("%s/n",addr_list[i].street);
- printf("%s/n",addr_list[i].city);
- printf("%s/n",addr_list[i].state);
- printf("%u/n/n",addr_list[i].zip);
- }
- }
- printf("/n/n");
- }
- /* ------------------------------------- */
- /* 保存信息到文件中 */
- /* ------------------------------------- */
- void save(void)
- {
- FILE *fp;
- register int i;
- if((fp=fopen("file","wb"))==NULL)
- printf("Cannot open file./n");
- for(i=0;i<MAX;i++)
- if(*addr_list[i].name)
- if(fwrite(&addr_list[i],sizeof(struct addr),1,fp)!=1)
- printf("File write error./n");
- fclose(fp);
- }
- /* ------------------------------------- */
- /* 从文件中加载信息 */
- /* ------------------------------------- */
- void load(void)
- {
- FILE *fp;
- register int i;
- if((fp=fopen("file","rb"))==NULL)
- printf("Cannot open file./n");
- init_list();
- for(i=0;i<MAX;i++)
- if(fread(&addr_list[i],sizeof(struct addr),1,fp)!=1)
- {
- if(feof(fp))
- break;
- printf("File read error./n");
- }
- fclose(fp);
- }
- /* ------------------------------------- */
- /* 菜单选择功能函数 */
- /* ------------------------------------- */
- int menu_select(void)
- {
- char str[80];
- int c;
- printf("1. Enter a name/n");
- printf("2. Delete a name/n");
- printf("3. list the file/n");
- printf("4. Save the file/n");
- printf("5. Load the file/n");
- printf("6. Quit/n");
- do
- {
- printf("/nEnter your choice: ");
- gets(str);
- c = atoi(str);
- }while(c<0||c>6);
- return c;
- }
- /* ------------------------------------- */
- /* 找到空闲的位置 */
- /* ------------------------------------- */
- int find_free(void)
- {
- register int i;
- for(i=0;addr_list[i].name[0]&&i<MAX;i++) ;
- if(i==MAX)
- return -1;
- return i;
- }
2、常用时间函数
- /*====================================================*/
- /* Program: */
- /* 常用时间函数 */
- /*====================================================*/
- #include <time.h>
- #include <stdio.h>
- int main()
- {
- struct tm *local;
- time_t tm;
- tm = time(NULL); /* time()返回系统的当前日历时间 */
- local = localtime(tm); /* localtime()返回指向tm 的指针 */
- printf("Local time and date: %s/n",asctime(local));/* asctime()返回指向一个串的指针*/
- local = gmtime(tm); /* gmtime()返回指针tm 的指针 */
- printf("UTC time and date %s/n",asctime(local));
- return 0;
- }
- /*================================================================================
- 各时间函数原型如下:
- time_t time(time_t *time)
- struct tm *localtime(const time_t *time)
- char *asctime(const struct tm *ptr)
- struct tm *gmtime(const time_t *time) 时间用UTC表示,若系统不支持,返回空
- ==================================================================================*/