有人能告诉我为什么这不起作用吗?

勒兰·达加什

所以我正在制作一个程序来扫描一些学生的姓名和成绩,然后向我展示所有平均为 85+ 的学生。我需要使用结构,并且指令说我必须在 strlen 函数的帮助下为名称动态分配内存。

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

typedef struct stud
{
    char *name;
    int marks[4];
    float avg;
}student;


student* Create_Class(int);
void Avg_Mark(student*);
void Print_One(student*);


int main()
{
    int size, i;
    student *arr;
    printf("\nEnter the number of students: ");
    scanf("%d", &size);
    arr = (student*)malloc(size * sizeof(student));
    arr = Create_Class(size);
    for (i = 0; i < size; i++)
    {
        if ((arr + i)->avg > 85)
            Print_One(arr + i);
    }
    for (i = 0; i < size; i++)
        free((arr[i].name));
    free(arr);
    return 0;
}

student* Create_Class(int size)
{
    struct stud *Arr;
    int i, j, k;
    char YourName[51];
    int length;
    Arr = (struct stud*)malloc(size * sizeof(struct stud));
    for (i = 0; i < size; i++)
    {
        printf("Enter your name: ");
        scanf(" %s", YourName);
        length = strlen(YourName);
        (Arr + i)->name = (char*)malloc(length * sizeof(char));
        for (k = 0; k < length; k++)
            (Arr + i)->name[k] = YourName[k];
        (Arr + i)->name[k] = '\0';
        printf("Enter your marks: ");
        for (j = 0; j < 4; j++)
            scanf("%d", &(Arr + i)->marks[j]);
    }
    for (i = 0; i < size; i++)
        Avg_Mark(Arr + i);
    return Arr;
}


void Avg_Mark(student* s)
{
    int i;
    float sum = 0;
    for (i = 0; i < 4; i++)
    {
        sum += s->marks[i];
    }
    s->avg = sum / 4;
}


void Print_One(student* s)
{
    printf("The average of %s is %.1f\n", s->name, s->avg);
}

似乎问题在于释放主函数中的名称字段指针。有人能告诉我出了什么问题吗?代码本身非常简单,所以如果有任何不清楚的地方,请随时提问,我会尽可能详细。

基兰比拉达尔

您的代码中有两个问题。

  1. 您正在arr通过调用覆盖内存create_class

    arr = (student*)malloc(size * sizeof(student)); arr = Create_Class(size);

    这将导致内存泄漏,因此只需删除arr = (student*)malloc(size * sizeof(student));.

  2. 您没有为您的name字段分配足够的内存

    length = strlen(YourName); (Arr + i)->name = (char*)malloc(length * sizeof(char));

    应该是length = strlen(YourName)+1;持有null字符。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有人能告诉我为什么这不起作用吗?C# XNA

来自分类Dev

有人可以告诉我为什么我的actionListener for循环不起作用吗?

来自分类Dev

有人可以告诉我为什么我的if / else陈述不起作用吗?

来自分类Dev

有人能告诉我为什么这个程序总是崩溃吗?

来自分类Dev

请告诉我为什么这不起作用!(基本jQuery)

来自分类Dev

我正在尝试编写一个程序,该程序将跟踪玩家赢得一切正常,除非有人能告诉我为什么我的if语句不起作用?

来自分类Dev

有人可以告诉我为什么这不是一个常数表达式吗?

来自分类Dev

在Scala中使用match函数时,出现意外结果。有人能告诉我为什么吗?

来自分类Dev

我是React的新手,有人可以告诉我为什么会这样吗?

来自分类Dev

很抱歉这么含糊,但是有人知道为什么这不起作用吗?

来自分类Dev

TextGeometry没有显示,有人可以告诉我为什么吗?

来自分类Dev

有人能告诉我这个javascript有什么问题吗?

来自分类Dev

有人能告诉我这段代码有什么问题吗?

来自分类Dev

有人能告诉我 Eclipse 调试中的错误是什么意思吗?

来自分类Dev

有人可以向我解释为什么该按钮不起作用吗?

来自分类Dev

有人知道为什么我的变换比例 css 不起作用吗?

来自分类Dev

有人能告诉我为什么我的“缩略图”不是我在代码链接中尝试的行格式吗?

来自分类Dev

有人可以告诉我为什么只有一个按钮起作用吗?它始终是头号,但从来没有都

来自分类Dev

有人能告诉我为什么这些 JavaScript 代码中的一个有效而另一个无效吗?

来自分类Dev

有人可以告诉我为什么我不理解此示例中的范围吗?

来自分类Dev

有人想告诉我为什么使用pygame Vector时我的pygame代码滞后吗?

来自分类Dev

有人可以告诉我为什么这段代码不叫我那个函数吗?

来自分类Dev

有人可以告诉我为什么我不理解此示例中的范围吗?

来自分类Dev

有人能告诉我什么是 iOS 中的移动设备证书认证吗?使用它的目的是什么?

来自分类Dev

有人能告诉我 emu8086 中的这段代码有什么问题吗?

来自分类Dev

WordPress中的自定义菜单无法正常工作,有人可以告诉我为什么吗?

来自分类Dev

通过YoutubeAPI设置自定义缩略图无效。有人可以告诉我为什么吗?

来自分类Dev

有人可以告诉我我的代码有什么问题吗?

来自分类Dev

有人可以告诉我我的代码有什么问题吗?[Python 2.7.1]

Related 相关文章

  1. 1

    有人能告诉我为什么这不起作用吗?C# XNA

  2. 2

    有人可以告诉我为什么我的actionListener for循环不起作用吗?

  3. 3

    有人可以告诉我为什么我的if / else陈述不起作用吗?

  4. 4

    有人能告诉我为什么这个程序总是崩溃吗?

  5. 5

    请告诉我为什么这不起作用!(基本jQuery)

  6. 6

    我正在尝试编写一个程序,该程序将跟踪玩家赢得一切正常,除非有人能告诉我为什么我的if语句不起作用?

  7. 7

    有人可以告诉我为什么这不是一个常数表达式吗?

  8. 8

    在Scala中使用match函数时,出现意外结果。有人能告诉我为什么吗?

  9. 9

    我是React的新手,有人可以告诉我为什么会这样吗?

  10. 10

    很抱歉这么含糊,但是有人知道为什么这不起作用吗?

  11. 11

    TextGeometry没有显示,有人可以告诉我为什么吗?

  12. 12

    有人能告诉我这个javascript有什么问题吗?

  13. 13

    有人能告诉我这段代码有什么问题吗?

  14. 14

    有人能告诉我 Eclipse 调试中的错误是什么意思吗?

  15. 15

    有人可以向我解释为什么该按钮不起作用吗?

  16. 16

    有人知道为什么我的变换比例 css 不起作用吗?

  17. 17

    有人能告诉我为什么我的“缩略图”不是我在代码链接中尝试的行格式吗?

  18. 18

    有人可以告诉我为什么只有一个按钮起作用吗?它始终是头号,但从来没有都

  19. 19

    有人能告诉我为什么这些 JavaScript 代码中的一个有效而另一个无效吗?

  20. 20

    有人可以告诉我为什么我不理解此示例中的范围吗?

  21. 21

    有人想告诉我为什么使用pygame Vector时我的pygame代码滞后吗?

  22. 22

    有人可以告诉我为什么这段代码不叫我那个函数吗?

  23. 23

    有人可以告诉我为什么我不理解此示例中的范围吗?

  24. 24

    有人能告诉我什么是 iOS 中的移动设备证书认证吗?使用它的目的是什么?

  25. 25

    有人能告诉我 emu8086 中的这段代码有什么问题吗?

  26. 26

    WordPress中的自定义菜单无法正常工作,有人可以告诉我为什么吗?

  27. 27

    通过YoutubeAPI设置自定义缩略图无效。有人可以告诉我为什么吗?

  28. 28

    有人可以告诉我我的代码有什么问题吗?

  29. 29

    有人可以告诉我我的代码有什么问题吗?[Python 2.7.1]

热门标签

归档