Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 函数不更新整型字段_C - Fatal编程技术网

C 函数不更新整型字段

C 函数不更新整型字段,c,C,除了我被破坏的票数int保持在0并且没有被函数更新之外,一切似乎都正常工作。我曾尝试添加一个指针,认为它会指向函数外部的对象,但该函数没有更新 #include <stdio.h> struct candidates { char name[20]; int votes; }; struct candidates electionCandidates[7]; void Initialize(struct candidates EC[]); void Processvotes(

除了我被破坏的票数int保持在0并且没有被函数更新之外,一切似乎都正常工作。我曾尝试添加一个指针,认为它会指向函数外部的对象,但该函数没有更新

#include <stdio.h>

struct candidates
{
 char name[20];
 int votes;
};
struct candidates electionCandidates[7];

void Initialize(struct candidates EC[]);
void Processvotes(struct candidates EC[], int *BadVote);
void printResults(struct candidates EC[], int *BadVote);

int main()

{

    int i, SPOIL = 0;

    Initialize(electionCandidates);
    Processvotes(electionCandidates, &SPOIL);
    printResults(electionCandidates, &SPOIL);

    for(i = 0; i < 7; i++)
    {
        printf("%s",electionCandidates[i].name);
        printf("%d\n\n",electionCandidates[i].votes);
    }

    printf("%d", SPOIL);

}

void Initialize(struct candidates EC[])
{
    int i;

    FILE *fp;
    fp = fopen("elections.txt", "r");

    for (i = 0; i < 7; i++)

    {
        fgets(EC[i].name, 20, (FILE*)fp);
    }

    fclose(fp);
}


void Processvotes(struct candidates EC[], int *BadVote)
{
        int TVOTE, i;

        FILE *fp;
        fp = fopen("elections.txt", "r");

        for (i = 0; i < 7; i++)
        {
            fgets(EC[i].name, 20, (FILE*)fp);
        }

        for (i = 0; i < 365; i++)
        {
            fscanf(fp, "%d", &TVOTE);

            if (TVOTE == 1)
                EC[0].votes++;
            if (TVOTE == 2)
                EC[1].votes++;
            if (TVOTE == 3)
                EC[2].votes++;
            if (TVOTE == 4)
                EC[3].votes++;
            if (TVOTE == 5)
                EC[4].votes++;
            if (TVOTE == 6)
                EC[5].votes++;
            if (TVOTE == 7)
                EC[6].votes++;

            if (TVOTE < 1 || TVOTE > 7)
                *BadVote++;
        }

        fclose(fp);
}

void printResults(struct candidates EC[], int *BadVote)
{

    int i, Win = 0, WinSCORE = 0, Runner = 0, RunnerSCORE = 0;

    for (i = 0; i < 7; i++)
    {

        if (EC[i].votes > WinSCORE)
        {
            WinSCORE = EC[i].votes;
            Win = i;
        }

        if (EC[i].votes == WinSCORE)
        {
            RunnerSCORE = EC[i].votes;
            Runner = i;
        }
    }


    if (WinSCORE == RunnerSCORE)
    {
        printf("There was a tie between %s and %s who both got a total of %d votes each. There were %d spoiled votes\n", EC[Win].name, EC[Runner].name, WinSCORE, *BadVote);
    }

    else
        printf("%s won the election with a total of %d votes. There was a total of %d spoiled votes.\n", EC[Win].name, WinSCORE, *BadVote);


}
#包括
结构候选
{
字符名[20];
整数票;
};
结构候选人选举候选人[7];
无效初始化(结构候选EC[]);
作废流程投票(结构候选人EC[],int*BADDOVE);
无效打印结果(结构候选EC[],int*BadVote);
int main()
{
int i,破坏=0;
初始化(选举候选人);
处理投票(选举候选人和破坏);
打印结果(选举候选人和候选人);
对于(i=0;i<7;i++)
{
printf(“%s”,选举候选人[i]。姓名);
printf(“%d\n\n”,选举候选人[i]。选票);
}
printf(“%d”,弃土);
}
无效初始化(结构候选EC[]
{
int i;
文件*fp;
fp=fopen(“elections.txt”、“r”);
对于(i=0;i<7;i++)
{
fgets(EC[i].名称,20,(文件*)fp;
}
fclose(fp);
}
无效流程投票(结构候选EC[],int*BadVote)
{
int TVOTE,i;
文件*fp;
fp=fopen(“elections.txt”、“r”);
对于(i=0;i<7;i++)
{
fgets(EC[i].名称,20,(文件*)fp;
}
对于(i=0;i<365;i++)
{
fscanf(fp、%d、&TVOTE);
如果(TVOTE==1)
EC[0]。投票++;
如果(TVOTE==2)
EC[1]。投票++;
如果(TVOTE==3)
EC[2]。投票++;
如果(TVOTE==4)
EC[3]。投票++;
如果(TVOTE==5)
EC[4]。投票++;
如果(TVOTE==6)
EC[5]。投票++;
如果(TVOTE==7)
EC[6]。投票++;
如果(TVOTE<1 | | TVOTE>7)
*不良投票++;
}
fclose(fp);
}
作废打印结果(结构候选EC[],int*BadVote)
{
int i,Win=0,WinSCORE=0,Runner=0,RunnerSCORE=0;
对于(i=0;i<7;i++)
{
如果(EC[i]。投票>WinSCORE)
{
WinSCORE=EC[i]。投票;
Win=i;
}
如果(EC[i]。票数==WinSCORE)
{
RunnerSCORE=EC[i]。投票;
Runner=i;
}
}
如果(WinSCORE==RunnerSCORE)
{
printf(“在%s和%s之间有一个平局,他们每人总共获得了%d张选票。有%d张被破坏的选票,\n”,EC[Win]。名称,EC[Runner]。名称,WinSCORE,*BadVote);
}
其他的
printf(“%s以总共%d张选票赢得选举。总共有%d张被破坏的选票。\n”,EC[Win]。name,WinSCORE,*baddoite);
}

任何帮助都将不胜感激。

后缀
++
运算符优先于
*
;当您编写
*BADDOVE++
时,实际上是在递增指针,而不是指向的值。您应该改为编写
(*baddoite)+
。有关更多信息,请参见。

后缀
++
运算符优先于
*
;当您编写
*BADDOVE++
时,实际上是在递增指针,而不是指向的值。您应该改为编写
(*baddoite)+
。有关详细信息,请参阅。

我很确定这是运算符优先级的问题。试试这个: 如果(TVOTE<1 | | TVOTE>7)
(*不良投票)+

我很确定这是运算符优先级的问题。试试这个: 如果(TVOTE<1 | | TVOTE>7)
(*不良投票)+

忽略main中的循环,使用printf语句进行名称投票,并检查值是什么。使用开关大小写代替如此长的if和for 7系列,您可以使用默认大小写。连同建议的(*反对票)+;忽略main中的循环,使用printf语句进行名称投票,并检查值是什么。使用开关大小写代替如此长的if和for 7系列,您可以使用默认大小写。连同建议的(*反对票)+;哦,好的。总是那么简单。非常感谢。哦,好的。总是那么简单。非常感谢你。