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

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

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 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同