将结构数组传递给函数作为指针(C)

我正在尝试编写一个函数,该函数将初始化数组中N个结构的所有值。我选择使用void函数并使用结构指针。使用单一结构指针没有问题,但是我无法弄清楚如何将指针地址传递给函数的结构数组。

以下代码产生一个错误。

typedef struct candidate {
    char name[20]; //name of the election candidate
    int votes; //amount of votes the candidate has
} election;

void Initialize(FILE *fp, int candidates, election *electionCandidates[]);

int main(void)
{
    const int candidates = 7; //this will be the amount of structs initialized
    const int voters = 365; //this will be the N iterations of a for loop for the voting process

    FILE *fp = fopen ("elections.txt", "R"); //save file pointer for use when taking formatted input

    election electionCandidates[candidates]; //declare 'candidates' structs, one for each candidate in the election

    Initialize(fp, candidates, &electionCandidates); //save candidate names and set votes = to 0

    fclose(fp);
    return 0;
}

void Initialize(FILE *fp, int candidates, election *electionCandidates[]) //init values of the candidate struct array by passing pointer to void function
{
    int eN = 0, N = candidates; //eN = executed number of for loop iterations, N = total number of iterations to be completed
    for (eN = 0; eN < N; eN ++)
    {
        char name[20] = "";
        fscanf (fp, "%s", &name);
        strcpy(electionCandidates[eN]->name, name);
        electionCandidates[eN]->votes = 0;
    }
}

我的错误指向这一行:

Initialize(fp, candidates, &electionCandidates); //save candidate names and set votes = to 0

有人对如何修复我的语法有更好的建议吗?

克拉斯·林贝克(KlasLindbäck)

之所以会出错,是因为您有一个指向数组的指针,并将其视为内部的指针数组Initialize

在您的情况下,您可以简单地传递一个简单的指针:

void Initialize(FILE *fp, int candidates, election *electionCandidates) //init values of the candidate struct array by passing pointer to void function
{
    int eN = 0, N = candidates; //eN = executed number of for loop iterations, N = total number of iterations to be completed
    for (eN = 0; eN < N; eN ++)
    {
        char name[20] = "";
        fscanf (fp, "%s", &name);
        strcpy(electionCandidates[eN].name, name);
        electionCandidates[eN].votes = 0;
    }
}

来自main的呼叫将变为:

    Initialize(fp, candidates, electionCandidates); //save candidate names and set votes = to 0

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将指针传递给char数组作为函数的参数-C

来自分类Dev

将结构指针传递给函数c ++

来自分类Dev

将数组结构作为指针传递给函数并进行初始化

来自分类Dev

C ++将指针数组传递给函数

来自分类Dev

c结构将自身作为参数传递给指针函数

来自分类Dev

C ++修改传递给函数作为指针的结构

来自分类Dev

指向结构中数组的C指针传递给函数

来自分类Dev

将数组从结构作为参数传递给函数

来自分类Dev

将结构数组作为参数传递给函数

来自分类Dev

如何将数组和结构传递给需要3个u32指针作为参数的c函数(ctypes)

来自分类Dev

从Go将结构和结构数组传递给C函数

来自分类Dev

C ++将方法的指针数组作为参数传递给方法

来自分类Dev

通过指针将结构传递给函数

来自分类Dev

将数组传递给函数-指针与引用(C ++与C)

来自分类Dev

将字符指针数组传递给C函数

来自分类Dev

将数组的指针传递给C中的函数

来自分类Dev

C将void指针数组传递给函数

来自分类Dev

C指针,了解如何将数组传递给函数

来自分类Dev

将结构数组传递给C中的值函数

来自分类Dev

C:将嵌套结构数组传递给函数

来自分类Dev

将指向char数组的指针作为函数的参数传递-C

来自分类Dev

将数组中的元素作为C函数中的指针传递

来自分类Dev

将指向数组的指针传递给函数

来自分类Dev

将“指针数组”传递给函数

来自分类Dev

将指针数组传递给函数

来自分类Dev

将char指针数组传递给函数

来自分类Dev

将char数组的指针传递给函数

来自分类Dev

将char指针数组传递给函数

来自分类Dev

将指针或数组传递给函数