commu.c
上传用户:bjtelijie
上传日期:2010-01-01
资源大小:87k
文件大小:3k
源码类别:

数学计算

开发平台:

Visual C++

  1. # include <stdio.h>
  2. # include <stdlib.h>
  3. # define MAX 100
  4. struct addr
  5. {
  6. char name[20];
  7. char street[40];
  8. char city[20];
  9. char state[4];
  10. unsigned long zip;
  11. } addr_list[MAX];
  12. void init_list(void);
  13. void enter(void);
  14. void dele(void);
  15. void list(void);
  16. void save(void);
  17. void load(void);
  18. int menu_select(void);
  19. int find_free(void);
  20. void main()
  21. {
  22. char choice;
  23. init_list();
  24. for( ; ; )
  25. {
  26. choice = menu_select();
  27. switch(choice)
  28. {
  29. case 1: enter();
  30.     break;
  31. case 2: dele();
  32.     break;
  33. case 3: list();
  34.     break;
  35. case 4: save();
  36. break;
  37. case 5: load();
  38. break;
  39. case 6: exit(0);
  40. }
  41. }
  42. }
  43. void init_list(void)
  44. {
  45. register int t;
  46. for(t=0; t<MAX; t++)
  47. addr_list[t].name[0] = '';
  48. }
  49. void enter(void)
  50. {
  51. int slot;
  52. char str[80];
  53. slot = find_free();
  54. if(slot == -1)
  55. printf("nList Full");
  56. printf("Enter name: ");
  57. gets(addr_list[slot].name);
  58. printf("Enter street: ");
  59. gets(addr_list[slot].street);
  60. printf("Enter city: ");
  61. gets(addr_list[slot].city);
  62. printf("Enter state: ");
  63. gets(addr_list[slot].state);
  64. printf("Enter zip: ");
  65. gets(str);
  66. addr_list[slot].zip = strtoul(str, '', 10);
  67. }
  68. void dele(void)
  69. {
  70. register int slot;
  71. char str[80];
  72. printf("Enter record #: ");
  73. gets(str);
  74. slot = atoi(str);
  75. if(slot>=0 && slot<MAX)
  76. addr_list[slot].name[0] = '';
  77. }
  78. void list(void)
  79. {
  80. register int t;
  81. for(t=0; t<MAX; t++)
  82. {
  83. if(addr_list[t].name[0])
  84. {
  85. printf("%sn", addr_list[t].name);
  86. printf("%sn", addr_list[t].street);
  87. printf("%sn", addr_list[t].city);
  88. printf("%sn", addr_list[t].state);
  89. printf("%snn", addr_list[t].zip);
  90. }
  91. }
  92. printf("nn");
  93. }
  94. void save(void)
  95. {
  96. FILE *fp;
  97. register int i;
  98. if((fp=fopen("maillist", "wb"))==NULL)
  99. printf("Cannot open file.n");
  100. for(i=0; i<MAX; i++)
  101. if(*addr_list[i].name)
  102. if(fwrite(&addr_list[i], sizeof(struct addr), 1, fp)!=1)
  103. printf("File write error.n");
  104. fclose(fp);
  105. }
  106. void load(void)
  107. {
  108. FILE *fp;
  109. register int i;
  110. if((fp=fopen("maillist", "rb"))==NULL)
  111. printf("Cannot open file.n");
  112.     init_list();
  113. for(i=0; i<MAX; i++)
  114. if(fread(&addr_list[i], sizeof(struct addr), 1, fp)!=1)
  115. {
  116. if(feof(fp))
  117. break;
  118. printf("File read error.n");
  119. }
  120. fclose(fp);
  121. }
  122. int menu_select(void)
  123. {
  124. char str[80];
  125. int c;
  126. printf("1. Enter a namen");
  127. printf("2. Delete a namen");
  128. printf("3. List the filen");
  129. printf("4. Save the filen");
  130. printf("5. Load the filen");
  131. printf("6. Quitn");
  132. do{
  133. printf("nEnter your choice: ");
  134. gets(str);
  135. c = atoi(str);
  136. } while(c<0 || c>6);
  137. return c;
  138. }
  139. int find_free(void)
  140. {
  141. register int t;
  142. for(t=0; addr_list[t].name[0]&&t<MAX; t++);
  143. if(t==MAX) 
  144. return -1;
  145. return t;
  146. }