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

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

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日

悬赏问题

  • ¥15 汇川EASY521plc电子凸轮
  • ¥15 C++ 如何判断设置快捷键来实现隐藏/显示窗口
  • ¥15 关于#材料工程#的问题:有没有具有电子阻挡层和空穴阻挡层的电池仿真silvaco代码例子或者其他器件具有阻挡层例子的silvaco代码(最好还有相关文献)
  • ¥60 基于MATLAB的TAOD算法
  • ¥15 Groimp使用疑问
  • ¥15 MDK–ARM里一直找不到调试器
  • ¥15 oracle中sql查询问题
  • ¥15 vue使用gojs3.0版本,在nodeDataArray中的iconSrc使用gif本地路径,展示出来后动画是静态的,不是动态的
  • ¥100 代写个MATLAB代码,有偿
  • ¥15 ansys electronics 2021 R1安装报错,错误代码2,如图