| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4632 人关注过本帖
标题:求助一个问题 如何选择修改结构体中的数据
取消只看楼主 加入收藏
fantasy89f
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2008-2-25
收藏
 问题点数:0 回复次数:9 
求助一个问题 如何选择修改结构体中的数据
void rewrite()
{
    int i;
    char id[10];
    printf("\n\t\t请输入要修改的学生学号:");
    scanf("%s",id);
    for(i=0;i<num;i++)
    {
         if(strcmp(student[i].id,id)==0)
         {
            printf("\n\t\t以下是您要修改的学生纪录:");
            printf("\n\t\t________________________________");
            printf("\n\t\t学号:  %s",student[i].id);
            printf("\n\t\t姓名:  %s",student[i].name);
            printf("\n\t\t电话:  %s",student[i].phone);
            printf("\n\t\t地址:  %s",student[i].adress);
            printf("\n\t\t邮编:  %s",student[i].postcode);
            printf("\n\t\te-mail:%s",student[i].e_mail);
            printf("\n\t\t________________________________");
            printf("\n\t\t请输入修改后的学生信息:");
            printf("\n\t\t输入姓名:");
            scanf("%s",&student[i].name);
            printf("\n\t\t输入电话号码:");
            scanf("%s",&student[i].phone);
            printf("\n\t\t输入地址:");
            scanf("%s",&student[i].adress);
            printf("\n\t\t输入邮编:");
            scanf("%s",&student[i].postcode);
            printf("\n\t\t输入e-mail:");
            scanf("%s",&student[i].e_mail);
            printf("\n\t\t是否继续修改?(Y/N):");
            if (getch()=='y')
                rewrite();
            return;
         }
    }
    printf("\n\t\t没有改学生的信息");
    printf("\n\t\t按任意键返回主菜单");
    getch();
    return;
}

这是我原来的代码,但是这样写就必须把所有的信息都改掉,如果我只选择其中一项修改应该怎么办??
谢谢
搜索更多相关主题的帖子: 结构体 数据 选择 
2008-03-07 16:59
fantasy89f
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2008-2-25
收藏
得分:0 
看不太明白,自己再研究下,谢谢帮助
2008-03-07 17:27
fantasy89f
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2008-2-25
收藏
得分:0 
这是我改的,大家帮我看下,为什么通过不了

void rewrite()
{
    int i;
    char id[10];
    char *name,*phone,*adress,*postcode,*e_mail;
    printf("\n\t\t请输入要修改的学生学号:");
    scanf("%s",id);
    for(i=0;i<num;i++)
    {
         if(strcmp(student[i].id,id)==0)
         {
            char *name,*phone,*adress,*postcode,*e_mail;
            printf("\n\t\t以下是您要修改的学生纪录:");
            printf("\n\t\t________________________________");
            printf("\n\t\t学号:  %s",student[i].id);
            printf("\n\t\t姓名:  %s",student[i].name);
            printf("\n\t\t电话:  %s",student[i].phone);
            printf("\n\t\t地址:  %s",student[i].adress);
            printf("\n\t\t邮编:  %s",student[i].postcode);
            printf("\n\t\te-mail:%s",student[i].e_mail);
            printf("\n\t\t________________________________");
            printf("\n\t\t请输入修改后的学生信息:");
            printf("\n\t\t输入姓名:");
            scanf("%s",name);
            if(name!='\0')
                strcpy(student[i].name=name);
            printf("\n\t\t输入电话号码:");
            scanf("%s",phone);
            if(phone!='\0')
                student[i].phone=phone;
            printf("\n\t\t输入地址:");
            scanf("%s",adress);
            if(adress!='\0')
                student[i].adress=adress;
            printf("\n\t\t输入邮编:");
            scanf("%s",postcode);
            if(postcode!='\0')
                student[i].postcode=postcode;
            printf("\n\t\t输入e-mail:");
            scanf("%s",e_mail);
            if(e_mail!='\0')
                student[i].e_mail=e_mail;
            printf("\n\t\t是否继续修改?(Y/N):");
            if (getch()=='y')
                rewrite();
            return;
         }
    }
    printf("\n\t\t没有该学生的信息");
    printf("\n\t\t按任意键返回主菜单");
    getch();
    return;
}
2008-03-07 17:46
fantasy89f
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2008-2-25
收藏
得分:0 
用switch写没问题可是用的时候显得太烦琐啊,我想可不可以判断输入的是不是enter,如果是则不保存,如果不是,则把输入的信息放到结构体数组中去,但是strcpy(student[i].name=name);这一句编译时worning,谁解释一下呀,谢谢
2008-03-08 09:52
fantasy89f
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2008-2-25
收藏
得分:0 
name[20],应该不是长度的问题吧,编译都通过不了
2008-03-08 10:03
fantasy89f
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2008-2-25
收藏
得分:0 
那我要是这样改的话应该也可以的吧,但是运行时有问题了
#include<stdio.h>
#include<string.h>
typedef struct
{
    char name[200];
}st;
void main()
{
    char *name;
    st student;
    gets(name);
    strcpy(student.name,name);
    puts(student.name);
}
2008-03-08 10:29
fantasy89f
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2008-2-25
收藏
得分:0 
在问一下下
“如果数组中只有一个空字符”
怎样用语句表示
2008-03-08 11:00
fantasy89f
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2008-2-25
收藏
得分:0 
if(name!='\0')
这样可不可以
2008-03-08 11:00
fantasy89f
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2008-2-25
收藏
得分:0 
if(name!='\0')
     strcpy(student[i].name,name);
你看我这句,按理说应该如果在name中输入enter键则不改变student[i].name,
可是我输入enter   strcpy(student[i].name,name);还是被执行了,为啥啊[bc02]
2008-03-08 11:07
fantasy89f
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2008-2-25
收藏
得分:0 
可以了,name[0]!='\0'也可以,终于解决了,实在太感谢了
2008-03-08 11:23
快速回复:求助一个问题 如何选择修改结构体中的数据
数据加载中...
 
   



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

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