r_ll_r 2022-12-25 21:31 采纳率: 75%
浏览 30
已结题

最近在学这个,搞不懂为什么会错?

麻烦看看下面的错误原因,感谢。结构体不是很熟练,借此机会学习一下,顺便弄懂->的使用

img

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2022-12-25 21:46
    关注

    s只是定义了结构体指针,需申请一个空间:struct stu *s = (struct stu *)malloc(sizeof(struct stu)); 同时增加头文件:#include <stdlib.h>
    s->name = str; 字符串只能拷贝,不能直接赋值:strcpy(s->name, str); 同时增加头文件:#include <string.h>

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
  • 滴水不穿石 2022-12-26 00:37
    关注

    指针不是容器,要分配内存才能使用,具体就是分配内存然后让指针指向这块内存;
    还有输出的变量名也没用对!

    img

    #include <stdio.h>
    #include <string.h>
    
    struct stu
    {
        char name[10];
        long num;
        int age;
    };
    
    int main(void)
    {
        //不用指针也可以用静态数据
        struct stu s;
        char str[] = "ZhangLi";
        //字符串不能直接赋值,但是可以用指针指向它
        //要想赋值要用到字串复制函数
        strncpy(s.name, str, strlen(str));
        s.num = 20021506;
        s.age = 18;
        printf("name=%s\nnum=%ld\nage=%d\n", s.name, s.num, s.age);
    
        return 0;
    }
    
    
    评论 编辑记录
  • Li&&Tao 2022-12-25 21:43
    关注

    第一,stu s的号不需要。
    第二,你的20021506是少了两位数,你自己定义的是char name[10]

    评论
查看更多回答(2条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 网络打印机Ip地址自动获取出现问题
  • ¥15 求局部放电案例库,用于预测局部放电类型
  • ¥100 QT Open62541
  • ¥15 stata合并季度数据和日度数据
  • ¥15 谁能提供rabbitmq,erlang,socat压缩包,记住版本要对应
  • ¥15 Vue3 中使用 `vue-router` 只能跳转到主页面?
  • ¥15 用QT,进行QGIS二次开发,如何在添加栅格图层时,将黑白的矢量图渲染成彩色
  • ¥50 监控摄像头 乐橙和家亲版 保存sd卡的文件怎么打开?视频怎么播放?
  • ¥15 Python的Py-QT扩展库开发GUI
  • ¥60 提问一下周期性信信号的问题