c - 使用引用运算符访问结构层

标签 c

如何使用 for 循环和引用运算符循环遍历数组?

for (i = 0; i < university->size; i++)
    {
        if (university->arr->MarkA <= 100)
        {
            sum += university->arr->MarkA;
            count++;
        }

我应该在哪里插入 i?

这些是结构:

typedef struct Student
{
    char *name;
    long ID;
    int MarkA, MarkB, HW;
}stud;

typedef struct University
{
    stud *arr;
    int size;
}Uni;

我用一个函数创建了一个大学数组

void build_Uni(FILE* in, Uni* university)
{
    int i = 0;
    stud temp;
    char Name[100];
    while (!feof(in))
    {
        fscanf(in, "%s%li%d%d%d", Name, &temp.ID, &temp.MarkA, &temp.MarkB, &temp.HW);
        i++;
    }
    university->size = i;
    rewind(in);
    university->arr = (stud*)malloc(university->size * sizeof(stud));
    if (university->arr == NULL) Get_Lost("Memory allocation failed!");
    else for (i = 0; i < university->size; i++)
        fill_Uni(in, university->arr + i);
}

void fill_Uni(FILE* in, stud* student)
{
    char Name[100];
    fscanf(in, "%s%li%d%d%d", Name, &student->ID, &student->MarkA, &student->MarkB, &student->HW);
    student->name = (char*)malloc((strlen(Name) + 1) * sizeof(char));
    if (student->name == NULL) Get_Lost("Error allocatig memory");
    strcpy(student->name, Name);
}

在主函数中我调用了上面的函数来处理这个结构

Uni university;

最佳答案

How can I cycle through the array using a for loop and the reference operator?

我想你的意思是解引用运算符 -> 但引用和解引用与遍历数组无关;这就是您的 for 循环的用途。

Where should I insert the i?

这个:

for (i = 0; i < university->size; i++)
{
        if (university->arr->MarkA <= 100)
        {
            sum += university->arr->MarkA;
            count++;
        }
}

应该是这样的:

for (i = 0; i < university->size; i++)
{
        if (university->arr[i].MarkA <= 100)
        {
            sum += university->arr[i].MarkA;
            count++;
        }
}

关于c - 使用引用运算符访问结构层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52227256/

相关文章:

c - 结构大小、填充和 future

c - 如何在C中使用递归函数打印从1到N的数字

c - 关于地址值和指针增量的问题?

c - 在 C 中使用埃拉托斯特尼筛法的素数

c - 以下C代码编译错误的原因

c - 基于链表的 Infix 计算器中的错误

c - 寻找中型代码块的来源

c - 需要有关 C 语言方法的帮助

c - 在C中读取和写入无符号字符缓冲区到文件?

c - 在 Windows 上从源代码构建 PHP 时,类似的语法会导致奇怪的重复编译错误