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

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

img

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

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

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;
}

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