Doodle 发表于 2020-11-22 13:26:25

结构体的一个问题

#include <stdio.h>
#define Q 1
struct person {
        char *name;
        int phone;
};

void main()
{
        int i;
        struct person man1;
        for(i=0;i<Q;i++)
        {
                printf("输入姓名:");
                scanf("%s",&man1.name);
                printf("输入电话号码:");
                scanf("%d",&man1.phone);
        }
        for(i=0;i<Q;i++)
        {
                printf("%s\t%20d",man1.name,man1.phone);
}
        system("pause");
}
为什么name用指针形式*name表示后就无法输出了,用数组形式就可以正常输出https://cdn.jsdelivr.net/gh/hishis/forum-master/public/images/patch.gif

xieglt 发表于 2020-11-22 19:20:44

没有分配空间,字符串存哪呢?

Doodle 发表于 2020-11-24 22:18:19

xieglt 发表于 2020-11-22 19:20
没有分配空间,字符串存哪呢?

那要是用*name的形式应该要怎么输出呢https://cdn.jsdelivr.net/gh/hishis/forum-master/public/images/patch.gif

xieglt 发表于 2020-11-25 07:02:58

structpersonman;
man. name=(char *)malloc(16);
先分配空间,才能使用。

Doodle 发表于 2020-11-28 18:00:25

xieglt 发表于 2020-11-25 07:02
structpersonman;
man. name=(char *)malloc(16);
先分配空间,才能使用。

还是不行,输出会强制停止

xieglt 发表于 2020-11-28 20:15:43


   struct person man1;
      for(i=0;i<Q;i++)
      {
               man1. name=(char *)malloc(32);
                printf("输入姓名:");
                scanf("%s",&man1.name);
                printf("输入电话号码:");
                scanf("%d",&man1.phone);
      }

xieglt 发表于 2020-11-28 20:16:39

printf("%s\t%d",man1.name,man1.phone);
页: [1]
查看完整版本: 结构体的一个问题