| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 662 人关注过本帖
标题:做通讯录系统遇到点问题,请教各位。
只看楼主 加入收藏
clovey10000
Rank: 2
等 级:论坛游民
帖 子:30
专家分:39
注 册:2013-4-24
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:4 
做通讯录系统遇到点问题,请教各位。
代码如下,
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
struct student
{
    char num[10];
    char name[20];
    char sex;
    char phone[12];
}stu[100];
int sum=0;
FILE *fp;                         //定义文本指针
void Student();                   //主菜单函数的声明     
void Insert();                    //添加联系人函数的声明
void Update();                    //修改函数的声明
void Delete();                    //删除函数的声明
void Show();                      //显示通讯录
void Search();                    //查找函数
void Search_1();                  //精确查找
void Search_2();                  //模糊查找  
void Save();                      //定义Save函数,向文件输出学生的数据
void main()
{
    Student();
}
void Student()
{
    int a;
    system("color f1");
    printf("\n\n\n");
    printf("\t\t\t 软件1214班学生通讯录管理系统\n");
    printf ("\n================================================================================\n");
    printf("\t\t\t\t1---添加联系人\n");
    printf("\t\t\t\t2---显示通讯录\n");
    printf("\t\t\t\t3---修改联系人\n");
    printf("\t\t\t\t4---删除联系人\n");
    printf("\t\t\t\t5---查找联系人\n");
    printf("\t\t\t\t6---退出\n");
    printf ("\n================================================================================\n");
    scanf("%d",&a);
    switch(a)
    {
        case 1:Insert();Student();break;
        case 2:Show();  break;
    /*    case 3:Update();break;
        case 4:Delete();break;
        case 5:Search();break;
        case 6:         break;
        default:printf("选择错误,请重新输入!");*/
    }
}

void Insert()
{
  int i,j;
  for(i=0;i<100;i++)
    {system("cls");
     sum=sum+1;
     printf("\n\n\t输入学号\n\t");
     scanf("%s",stu[i].num);
     printf("\n\n\t输入姓名\n\t");
     scanf("%s",stu[i].name);
     printf("\n\n\t输入性别\n\t");
     scanf("%s",&stu[i].sex);
     printf("\n\n\t输入号码\n\t");
     scanf("%s",stu[i].phone);
     printf("\n是否继续添加:1是0否");
     scanf("%d",&j);
     if(j==1)
       printf("\n");
     else
       break;
    }
    Save();
      
}

void Save()
{
    int i;
    if((fp=fopen("1214","wb"))==NULL)
       {printf("can not open file\n");
        exit(0);
       }
    for(i=0;i<sum;i++)
      if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
        printf("file write error\n");
    fclose(fp);   
}

void Show()
{
    system("cls");
    int i,j;
    if((fp=fopen("1214","rb"))==NULL)
      {printf("can not open file\n");
       exit(0);
      }
    if(sum!=0)
      for(i=0;i<sum;i++)
       if(fread(&stu[i],sizeof(struct student),1,fp)!=1)
         printf("file write error\n");
      for(i=0;i<sum;i++)
         printf("%s%s%s%s",stu[i].num,stu[i].name,stu[i].sex,stu[i].phone);
    fclose(fp);
    if(sum==0)
      printf("\n\t\t\t\t通讯录目前没有记录\n");
    printf("按任意键返回主界面");  
    scanf("%s",&j);
    system("cls");
    Student();            
}

/*void Delete()
{
   
}
 
void Update()
{
   
}

void Search()*/
问:数据检查到录入到了1214的文件中,不过好像用程序中的Show(显示通讯录记录的函数)读不出1214文件中的内容。望各位不吝赐教,谢谢。
搜索更多相关主题的帖子: 通讯录 联系人 include 
2013-06-10 10:09
成长的野人
Rank: 2
等 级:论坛游民
帖 子:7
专家分:17
注 册:2013-6-3
收藏
得分:10 
我自己试了一下,是你的输出
void Show()
for(i=0;i<sum;i++)
         printf("%s%s%s%s",stu[i].num,stu[i].name,stu[i].sex,stu[i].phone);
中的性别要用%c输出,不然会错的。
2013-06-10 11:04
clovey10000
Rank: 2
等 级:论坛游民
帖 子:30
专家分:39
注 册:2013-4-24
收藏
得分:0 
被你说中了,可是为什么啊?
2013-06-10 11:25
成长的野人
Rank: 2
等 级:论坛游民
帖 子:7
专家分:17
注 册:2013-6-3
收藏
得分:0 
应该是%s的输出要遇到'\0'才会停止输出,而%c输出一个字符。
具体的我也解释不清楚,还是请其他人帮忙解释吧。
2013-06-10 11:54
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:10 
你定义的性别是  char sex;

Maybe
2013-06-10 17:05
快速回复:做通讯录系统遇到点问题,请教各位。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038910 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved