C结构体含字符串的scanf多成员输入问题

img

img


为什么这样不能正常输入输出,是否是缓存区问题?如何解决输出使用一个scanf输入一个结构体全体成员(含字符串成员)。

  • 结构体中不要定义字符指针【指针变量赋值前,需要先分配内存】,只要改成 字符数组就可以直接输入了
  • 参考如下:

#include<stdio.h>

typedef struct {
    int num;
    char name[100];
    int score;
} stu;

int main()
{
    stu a;

    scanf("%d %s %d", &a.num, a.name, &a.score);
    printf("%d %s %d", a.num, a.name, a.score);
    return 0 ;
}

char * name没有分配内存
可以写 char name[100]

你的a.name没有分配内存,是野指针,访问野指针当然会崩溃

结构体内的name成员只是个指针,并没有它所指向的内存空间,赋值不能成功的。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^