标题:帮忙看看。结构体输入不进去的问题,困扰了好久
只看楼主
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
结帖率:97.5%
已结贴  问题点数:20 回复次数:8 
帮忙看看。结构体输入不进去的问题,困扰了好久
就第一个输入 录入不完就结束了,看了好一会不知道哪里问题
我输入输出单独进行也是录入不进去。头痛,想不明白怎么回事
struct Information
{
    long num;
    char name[10];
    char sex;
    char job[10];
    union
    {
        int clas;
        char position[10];
    }category;
}info[2];
int main()
{
  for(int i=0;i<2;i++)
  {     printf("请输入学号/教师号、姓名、性别、职业\n");
     scanf("%ld",&info[i].num);printf("%ld\n",info[i].num);
     scanf("%s",info[i].name);printf("%s\n",info[i].name);
     scanf("%c",&info[i].sex);printf("%c\n",info[i].sex);
     scanf("%s",info[i].job);printf("%s\n",info[i].job);}

[此贴子已经被作者于2017-3-15 15:27编辑过]

搜索更多相关主题的帖子: category position 结构体 教师 姓名 
2017-03-15 14:57
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
得分:10 
scanf("%ld",&info[i].num);printf("%ld\n",info[i].num);
scanf("%s",info[i].name);printf("%s\n",info[i].name);
scanf("%c",&info[i].sex);printf("%c\n",info[i].sex);
getchar();  //加上这个
scanf("%s",info[i].job);printf("%s\n",info[i].job);}

未佩好剑,转身便已是江湖
2017-03-15 15:32
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
得分:0 
回复 2楼 alice_usnet
操作了下可以的。能说下原理吗?谢谢。
2017-03-15 15:37
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
scanf("%ld %s %c %s",&info[i].num,info[i].name,&info[i].sex,info[i].job);
2017-03-15 15:43
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
得分:0 
回复 4楼 吹水佬
scanf("%ld%s%c%s",&info[i].num,info[i].name,&info[i].sex,info[i].job);
我最开始这样输入没加空格的时候,为啥录入到char字符的时候  后面跟了几个换行。
scanf("%ld %s %c %s",&info[i].num,info[i].name,&info[i].sex,info[i].job);
我用你说的加了空格输入,后面录入数据的时候就没跟换行。这两种输入方式有什么区别吗
2017-03-15 15:50
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
得分:0 
回复 3楼 Emotiona
因为最后一个scanf读了一个'\n',而这个'\n'是上一个scanf留下的。

未佩好剑,转身便已是江湖
2017-03-15 15:52
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
得分:0 
回复 6楼 alice_usnet
帮我看看。为啥共同体里面的成员打印不出来。脑子不好使,在红色字段哪里。谢谢

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct Information
{
    long num;
    char name[10];
    char sex;
    char job[10];
    union
    {
        int clas;
        char position[10];
    }category;
}info[2];
int main()
{
  for(int i=0;i<2;i++)
  {     printf("请输入学号/教师号、姓名、性别、职业\n");
      scanf("%ld %s %c %s",&info[i].num,info[i].name,&info[i].sex,info[i].job);

      if(strcmp(info[i].job,"学生")==0)
      {
          printf("你的职业是学生,请输入班级\n");                //这里
          scanf("%d",&info[i].category.clas);
      }
      else if(strcmp(info[i].job,"教师")==0)                    //这里
      {
          printf("你的职业是老师,请输入课程老师\n");
          scanf("%s",info[i].category.position);
      }
      else
      printf("输入错误!\n");
  }
      for(int i=0;i<2;i++)
      {
          if(strcmp(info[i].job,"学生"))
          printf("%ld%10s%4c%6s%6d\n",info[i].num,info[i].name,info[i].sex,info[i].job,info[i].category.clas);
          else if(strcmp(info[i].job,"教师"))
          printf("%ld%10s%4c%6s%6s\n",info[i].num,info[i].name,info[i].sex,info[i].job,info[i].category.position);
      }
}
2017-03-15 16:16
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
得分:0 
回复 7楼 Emotiona


打印不出共同体的成员
2017-03-15 16:19
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用Emotiona在2017-3-15 15:50:47的发言:

scanf("%ld%s%c%s",&info.num,info.name,&info.sex,info.job);
我最开始这样输入没加空格的时候,为啥录入到char字符的时候  后面跟了几个换行。
scanf("%ld %s %c %s",&info.num,info.name,&info.sex,info.job);
我用你说的加了空格输入,后面录入数据的时候就没跟换行。这两种输入方式有什么区别吗

scanf有些“陷阱”
scanf控制串构成:
    1、格式化说明符
    2、空白符
    3、非空白符
其中“空白符”,指空白字符,会使scanf在读操作中略去输入中的一个或多个空白字符,空白符可以是space,tab,newline等等,直到第一个非空白符出现为止。

在用"%c"输入时,空格和“转义字符”均作为有效字符。
例:
scanf("%c%c%c",&c1,&c2,&c3);
输入:a□b□c↙
结果:a→c1,□→c2,b→c3 (其余被丢弃)


2017-03-15 16:20



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




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

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