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日

悬赏问题

  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan