静战者828 2021-12-16 19:40 采纳率: 100%
浏览 38
已结题

C语言,提问一个关于结构体的问题

devc++

#include<stdio.h>
#define N 2
struct tele
{
    char name;
    int telenumber;
    char email;
};
struct tele tel[N];
int main()
{
    void print(struct tele tel[N]);
    int i;
    for(i=0;i<N;i++)
    {
        printf("\n请输入第%d个同学的通讯录:\n",i+1);
        printf("姓名:");scanf("%c",&tel[i].name);
        printf("电话号码:");scanf("%d",&tel[i].telenumber);
        printf("电子邮件地址:");scanf("%c",&tel[i].email);
    }
    printf("\n");
    print(tel);
}
void print(struct tele tel[N])
{
    int i;
    printf("\n姓名  电话号码  电子邮件地址\n");
    for(i=0;i<N;i++)
    {
        printf("%c %d %c",tel[i].name,tel[i].telenumber,tel[i].email);
        printf("\n");
    }
}


```题目是建立简单的同学通讯录,输入10个同学的通讯信息(通讯录信息包括姓名、电话号码、电子邮箱)并输出。
为了方便测试,把代码中的人数改少了,代码如下:

#include<stdio.h>
#define N 2
struct tele
{
    char name;
    int telenumber;
    char email;
};
struct tele tel[N];
int main()
{
    void print(struct tele tel[N]);
    int i;
    for(i=0;i<N;i++)
    {
        printf("\n请输入第%d个同学的通讯录:\n",i+1);
        printf("姓名:");scanf("%c",&tel[i].name);
        printf("电话号码:");scanf("%d",&tel[i].telenumber);
        printf("电子邮件地址:");scanf("%c",&tel[i].email);
    }
    printf("\n");
    print(tel);
}
void print(struct tele tel[N])
{
    int i;
    printf("\n姓名  电话号码  电子邮件地址\n");
    for(i=0;i<N;i++)
    {
        printf("%c %d %c",tel[i].name,tel[i].telenumber,tel[i].email);
        printf("\n");
    }
}



![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/682554456936172.png "#left")
输入到电子邮件部分(也就是一个字符)就会自动跳过,真的百思不得其解,求解答
另外,为什么scanf函数里面不加&(取地址运算符)就不行呢?我看到书本上的有些可以不加,不知道为什么


  • 写回答

3条回答 默认 最新

  • whizer 2021-12-16 19:53
    关注

    1)修改一下你的结构体,char只能输入一个字符,char数组可以是多个。
    2)百度一下scanf函数的用法。

    #define NAME_LEN  64
    #define EMAIL_LEN  64
    
    struct tele {
        char name[NAME_LEN];
        int telenumber;
        char email[EMAIL_LEN];
    };
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月29日
  • 已采纳回答 12月21日
  • 创建了问题 12月16日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分