要求打印,学号,身高,年龄,性别,名字,这个程序哪里不对

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#pragma warning (disable:4996)
struct stu
{
    int id;
    int*high;
    int age;
    char sex;
    char name[128];
};
void set_num(struct stu*num, int n)
{
    for (int i = 0; i < n; i++)
    {
        (*(num + i)).id = i + 10;
        int oh = 182 + i;
        char buf = "";
        sprintf(buf, "%d%d%s\n", i, i, "helloword");
        strcpy((*(num + i)).name, buf);
        strcpy((num+i)->high,oh);
        (*(num + i)).age = 50 + i;
        strcpy((*(num + i)).sex, "boy and girl");
    }    
}
int main()
{
    struct stu num[128];
    memset(num, 0, sizeof(num));
    set_num(num, sizeof(num) / sizeof(num[0]));
    for (int i = 0; i < sizeof(num) / sizeof(num[0]); i++)
    {
        printf("%d%d%d%s%s\n", num[i].id, num->high, num[i].age, num[i].sex, num[i].name);
    }
    system("pause");
    return 0;
}

printf("%d%d%d%s%s\n", num[i].id, num->high, num[i].age, num[i].sex, num[i].name);

改为

printf("%d%d%d%c%s\n", num[i].id, *num[i].high, num[i].age, num[i].sex, num[i].name);

set_num函数错误太多了,基本概念模糊啊

void set_num(struct stu*num, int n)
{
	for (int i = 0; i < n; i++)
	{
		(*(num + i)).id = i + 10;
		int oh = 182 + i;
		char buf[100] = { 0 };
		sprintf(buf, "%d%d%s\n", i, i, "helloword");
		strcpy((*(num + i)).name, buf);
		(num + i)->high = new int;
		*((num + i)->high) = oh;
		(*(num + i)).age = 50 + i;
		(*(num + i)).sex = 'M';
	}
}

 

结构体定义身高是指针型了,把*去掉

您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~

ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓

【电脑端】戳>>>  https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】  戳>>>  https://mall.csdn.net/item/52471?utm_source=1146287632

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632