• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

结构体成员初始化的问题,出现警告,这是为什么呢,该怎么改呢?

SingleYork 2018-08-16 浏览量:1425

在看C语言结构体部分的时候,遇到个问题,初始化成员的时候出现了两个警告,如下图所示,请问这是什么原因造成的呢?需要怎么修改才能消除这个警告?


01.png

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 你应该写:

    stan.bank="garlic_******"后面一个也是一样的。

    ==============================================

    你在使用这个结构体的时候,有两个错误:

    1、 stan.bank[FANDLEN]中的FANDLEN超过定义char数组的最大长度。

    2、“Garlic **”这是一个字符串,你却把它赋值在单个字符中

    • 发布于 2018-08-16
    • 举报
    • 评论 5
    • 0
    • 0
SingleYork 回复了 川楠:stan.bank = "Garlic-Melon Bank";这样写也是错的…… 回复
川楠 回复了 SingleYork:stan 声明的时候,直接funds stan; 去掉struct试试? 回复
SingleYork 回复了 川楠:感谢你的热心回答,不过还是没找到真正的问题所在…… 回复
川楠 回复了 SingleYork:经过我的查找资料,我终于弄明白了,stan.bank = "Garlic-Melon Bank";这种赋值方式只有在结构体初始化的时候才能用。后面只能用strcpy(stan.bank"abcd");这样的格式,记得要包含string.h头文件。我也算是学习了一下。 回复
SingleYork 回复了 川楠:我后面也是找到了这种方式才对了strcpy(stan.bank"abcd"),还有一个memcpy()函数也能实现,感谢回答…… 回复

其他答案 数量:9
  • /*把结构成员作为参数传递*/
    #include <stdio.h>
    #define FUNDLEN 50
    struct  funds
    {
    char bank[FUNDLEN];
    double bankfund;
    char save[FUNDLEN];
    double savefund;
    };


    struct  funds   ks  =
    {
         "ass"
          123
          "ass"
          456


    };


    double sum(double double);
    int main(void)
    {
    //struct funds stan = {
    //"Garlic-Melon Bank"
    //4032.27
    //"Lucky's Savings and Loan"
    //8543.94
    //};
    struct funds stan;
    stan.bank[FUNDLEN] =  "Garlic-Melon Bank" ;
    stan.bankfund = 4032.27;
    stan.save[FUNDLEN] = "Lucky's Savings and Loan" ;
    stan.savefund = 8543.94;

    printf("Stan has a total of $%.2f.\n" sum(stan.bankfund stan.savefund));
    return 0;
    }

    double sum(double x double y)
    {
    return(x + y);
    }




    struct funds stan;
    stan.bank[FUNDLEN] =  "Garlic-Melon Bank" ;
    stan.bankfund = 4032.27;
    stan.save[FUNDLEN] = "Lucky's Savings and Loan" ;
    stan.savefund = 8543.94;

    改为:



    char *s="Garlic-Melon Bank" ;
    memcpy(&stan.bank[0]sstrlen(s));
    • 发布于2018-08-16
    • 举报
    • 评论 0
    • 2
    • 0

  • 字符变量,你赋值了字符串,只能一个凳子你让20个人去坐,当然会暴乱
    • 发布于2018-08-17
    • 举报
    • 评论 0
    • 1
    • 0

  • 赋值方式有问题,你这个语句代表在这个数组的第51赋值这一长串字符串
    • 发布于2018-08-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 数组不能这样赋值,题主这样只能是在申明数组的同时赋值时才是合法的
    • 发布于2018-08-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 想这样赋值的话,需要在申明数组的同时就赋值时才可以
    • 发布于2018-08-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 你的数值赋值有问题,你在申明数值的数值的时候要进行赋值
    • 发布于2018-08-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 肯定啊,你stan对象的bank是char数组,加了中括号就是char数组的成员即char字符了,而等号右边是字符串即const char*,char和const char*肯定不能直接赋值。

    • 发布于2018-08-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 两者是不能直接赋值的,你的变量加了const修饰符
    • 发布于2018-09-15
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

结构体成员初始化的问题,出现警告,这是为什么呢,该怎么改呢?