麻烦看看下面的错误原因,感谢。结构体不是很熟练,借此机会学习一下,顺便弄懂->的使用
s只是定义了结构体指针,需申请一个空间:struct stu *s = (struct stu *)malloc(sizeof(struct stu)); 同时增加头文件:#include <stdlib.h>
s->name = str; 字符串只能拷贝,不能直接赋值:strcpy(s->name, str); 同时增加头文件:#include <string.h>
指针不是容器,要分配内存才能使用,具体就是分配内存然后让指针指向这块内存;
还有输出的变量名也没用对!
#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]