标题:信息的输入输出问题,编译器没报错,结构不对,求大佬解释一下
只看楼主
浅草没马蹄
Rank: 2
来 自:湖北
等 级:论坛游民
帖 子:20
专家分:18
注 册:2018-3-10
结帖率:40%
已结贴  问题点数:20 回复次数:3 
信息的输入输出问题,编译器没报错,结构不对,求大佬解释一下
[code]#include<stdio.h>
struct person{  //个人信息结构体
    int num;
    char name[10];
    char sex;
    char job;
    union{
        int clas;
        char position[10];
    }category;
}person[1];
//输入数据函数
void Cin(struct person person1){
    scanf("%d%d%c%c",&person1.num,&person1.name,&person1.sex,&person1.job);
}
//输出数据函数
void Cout(struct person person){
    printf("%d,%d,%c,%c",person.num,person.name,person.sex,person.job);
}
//主函数
int main(){
    int i;
    for(i=1;i<3;i++){
        printf("请输入这个人的数据\n");
        Cin(person[i]);
        if(person[i].job=='s'){     //如果为学生就输入编辑号
            scanf("%d",&person[i].category.clas);
        }else if(person[i].job=='t'){   //如果是老师就输入所教科目
            scanf("%c",&person[i].category.position);
        }else{     //其他输出报错
            printf("error input!\n");
        }
    }
    printf("\n");
    printf("No. name      sex job  class/position\n");   //输出学生数据
    for(i=0;i<3;i++){
        if(person[i].job=='s'){
            Cout(person[i]);
            printf("%d\n",person[i].category.clas);
        }else{
            Cout(person[i]);          //输出老师数据
            printf("%s\n",person[i].category.position);
        }
    }
    return 0;
}[code]
搜索更多相关主题的帖子: 输入 输出 person 数据 printf 
2018-05-18 20:08
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:10 
值传递
你调用Cin的时候
创建了一个结构体变量person1
然后用person[i] 给这个新变量person1赋值
然后函数内部调用scanf 重新给person1赋值
然后函数调用结束 把person1销毁

发现问题了吗
person[i] 从头到尾 只出现一次读数据的操作
根本没写数据的操作 根本没发生变化
一开始是什么 到最后还是什么

然后

程序代码:
struct person{  //个人信息结构体
    int num;
    char name[10];
    char sex;
    char job;
    union{
        int clas;
        char position[10];
    }category;
}person[1];


    for(i=1;i<3;i++){
        printf("请输入这个人的数据\n");
        Cin(person[i]);

你的person 才1个元素
循环里面访问0 1 2 后面2个操作是数组越界了
GG

其他还没看 你先处理一下现在的问题

https://zh.
2018-05-18 22:45
dzy123
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:379
专家分:820
注 册:2013-4-18
得分:10 
#include<stdio.h>
struct person{  //个人信息结构体
    int num;
    char name[10];
    char sex[4];
    char job;
    union{
        int clas;
        char position[10];
    }category;
}person1[10];
//输入数据函数
void Cin(int n){
    scanf("%d%s%s %c",&person1[n].num,person1[n].name,person1[n].sex,&person1[n].job);
}
//输出数据函数
void Cout(int n){
    printf("%2d   %s    %s   %c",person1[n].num,person1[n].name,person1[n].sex,person1[n].job);
}
//主函数
int main(){
    int i;
    for(i=1;i<3;i++){
        printf("请输入这个人的数据\n");
        Cin(i);
        if(person1[i].job=='s'){     //如果为学生就输入编辑号
            scanf(" %d",&person1[i].category.clas);
        }else if(person1[i].job=='t'){   //如果是老师就输入所教科目
            scanf("%s",person1[i].category.position);
        }else{     //其他输出报错
            printf("error input!\n");
        }
    }
    printf("\n");
    printf("No.  name   sex   job  class/position\n");   //输出学生数据
    for(i=1;i<3;i++){
        if(person1[i].job=='s'){
            Cout(i);
            printf("     %d\n",person1[i].category.clas);
        }else{
            Cout(i);          //输出老师数据
            printf("              %s\n",person1[i].category.position);
        }
    }
    return 0;
}给你改了一下自己再看一下
2018-05-19 00:01
浅草没马蹄
Rank: 2
来 自:湖北
等 级:论坛游民
帖 子:20
专家分:18
注 册:2018-3-10
得分:0 
回复 3楼 dzy123
非常感谢!
2018-05-19 16:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-487056-1-1.html




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

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