m0_74329414 2022-12-26 23:57 采纳率: 100%
浏览 89
已结题

c语言结构体难度不大的问题,求解决

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int N,i;
    scanf("%d",&N);
    struct student
    {

        char r[20];
        int b,c,d;

    } stu[N];
    for(i=0; i<N; i++)
    {
        strcpy(stu[i].r,"\0");
    }
    for(i=0; i<N; i++)
    {
        scanf("%s %d %d",stu[i].r,&stu[i].b,&stu[i].c);
        stu[i].d=stu[i].c*1000+stu[i].b;
    }
    printf("\n");
    for(i=0; i<N; i++)
    {
        printf("%s %d\n",stu[i].r,stu[i].d);
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/33311007027613.png "#left")

    }
    return 0;
}

题目:现有N名销售人员,每名销售人员的工资由基本工资与绩效组成,其中绩效为当月成功订单金额中抽成10%,现给出每名销售人员的基本情况,输出每名销售人员的姓名与工资情况。

img

为什么第五个数据中的名字最后输出的时候会多出来PG两个字母?我尝试过对结构体中的数组赋空格的初值,发现最后还是有这两个字母,求告知原因和解决方法。

  • 写回答

2条回答 默认 最新

  • ShowMeAI 2022-12-27 00:08
    关注

    望采纳,有问题再沟通

    • 这个问题是由于使用 strcpy 函数将字符串 "\0" 复制到 stu[i].r 中时出现的。
    • strcpy 函数的作用是将一个字符串的内容复制到另一个字符串中。然而,在这种情况下,stu[i].r 是一个字符数组,而不是一个指向字符串的指针。因此,使用 strcpy 函数将字符串 "\0" 复制到 stu[i].r 中时,会将字符串 "\0" 中的所有字符(即'\0')复制到 stu[i].r 中。
    • 此外,在使用 scanf 函数读入字符串时,字符串后面会自动添加一个空字符'\0',因此最终会在 stu[i].r 中有两个空字符'\0',导致最后输出的字符串中多出了两个空字符'\0'。
    • 要解决这个问题,可以使用 memset 函数将 stu[i].r 中的每个字符都设为'\0',或者直接使用 stu[i].r = {0} 初始化字符数组。
    memset(stu[i].r, 0, sizeof(stu[i].r));
    

    或者:

    stu[i].r = {0};
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月5日
  • 已采纳回答 12月28日
  • 创建了问题 12月26日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。