教你夺冠


私信TA

用户名:835685327

访问量:69255

签 名:

相互交流 相互学习

等  级
排  名 14
经  验 11988
参赛次数 0
文章发表 84
年  龄 0
在职情况 学生
学  校 辣鸡施工大学
专  业

  自我简介:

努力刷题 熟能生巧!

严格遵守题目要求,规范代码!

复习指针方式,提供大家参考学习交流~


参考代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//定义一个学生结构体
typedef struct
{
    char *id;
    char *name;
    int score1;
    int score2;
    int score3;
} Stu;

//1 输入一个Stu信息 返回一个Stu指针
Stu *inputStu()
{
    Stu *stutmp = (Stu*)malloc(sizeof(Stu));
    if (stutmp == NULL)
    {
        return NULL;
    }

    char idtmp[100];
    scanf("%s", idtmp);
    stutmp->id = (char*)malloc(strlen(idtmp) + 1);
    if (stutmp->id == NULL)
    {
        return NULL;
    }
    strcpy(stutmp->id, idtmp);

    char nametmp[100];
    scanf("%s", nametmp);
    stutmp->name = (char*)malloc(strlen(nametmp) + 1);
    if (stutmp->name == NULL)
    {
        return NULL;
    }
    strcpy(stutmp->name, nametmp);

    scanf("%d", &stutmp->score1);
    scanf("%d", &stutmp->score2);
    scanf("%d", &stutmp->score3);

    return stutmp;
}

//2 打印学生信息
void printStu(Stu *stu)
{
    printf("%s,%s,%d,%d,%d\n", stu->id, stu->name, stu->score1, stu->score2, stu->score3);
}

//3 释放一个Stu结构
void freeStu(Stu *stu)
{
    if (stu == NULL)
        return;

    free(stu->id);
    free(stu->name);
    free(stu);
}

int main()
{
    int N;
    scanf("%d", &N);
    if (N >= 100)
    {
        return -1;
    }

    //定义一个结构体指针数组,存放N个指针
    Stu *student[N];
    //1 输入
    int i;
    for (i = 0; i < N; i++)
    {
        student[i] = inputStu();
    }

    //2 打印
    for (i = 0; i < N; i++)
    {
        printStu(student[i]);
    }

    //3 释放
    for (i = 0; i < N; i++)
    {
        freeStu(student[i]);
    }

    return 0;
}


 

0.0分

4 人评分

  评论区

主函数定义的Stu *student[N]在vs2019编译器会出错,怎么解决
2019-11-19 11:30:53 | |
if (stutmp == NULL)
    {
        return NULL;
    }     这是用来做什么的? 还有下面的
2018-05-18 15:24:23 | |
stutmp->id = (char*)malloc(strlen(idtmp) + 1);请问这里为什么要+1?
2018-05-13 21:02:00 | |
  • «
  • 1
  • »