Woo.371 2022-10-31 13:04 采纳率: 85.7%
浏览 27
已结题

为什么给链表节点里的数组成员赋值不了呢

struct student {
char name[100];//名字
char sex[10];//性别
int age;//年龄
float A;//平时分
float B;//考试分
float C;//总分(A0.5+b0.5)
struct student * pNext;//指针域
};
这个是定义的一个结构体
struct student * pHead=NULL; //初始化头指针
pHead = create_list(); //create_list()功能:创建一个非循环单链表,并将该链表的头结点的地址付给pHead
进入函数
struct student * create_list(void){
char name[100];//名字
char sex[10];//性别
struct student * pHead = (struct student *)malloc(sizeof(struct student));// 给头指针分配头结点
下面是赋值的手段(虽然赋值数组不行,但对int/float这些数字类型就能成功赋值)
for (i=0; i<ret; ++i)
{
printf("请输入第%d个学生信息\n",i+1);
printf("名字:\n");
scanf("%s",&name[i]);
ah=getchar();
printf("性别(男/女):\n");
scanf("%s",&sex[i]);
}
struct student * pNew = (struct student *)malloc(sizeof(struct student)); //创造一个新空间,pNew指向它
pNew->name[100]= name[i]; pNew->sex[10] =sex[i];
这种情况输出是很奇怪的字

img

img

img

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-10-31 13:12
    关注

    pNew->name[100]= name[i]; pNew->sex[10] =sex[i];是不对的,要用字符串复制
    strcpy(pNew->name,name);
    strcpy(pNew->sex,sex);
    ==========
    输入语句也是错的,改为
    for (i=0; i<ret; ++i)
    {
    printf("请输入第%d个学生信息\n",i+1);
    printf("名字:\n");
    scanf("%s",name);
    ah=getchar();
    printf("性别(男/女):\n");
    scanf("%s",sex);
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 11月8日
  • 已采纳回答 10月31日
  • 创建了问题 10月31日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改