变量在 if else 循环之前正确打印,但在 if else 循环中不保留该值

Variable is printed properly right before an if else loop, but does not retain that value one in the if else loop

我编写了一个程序,从文本文件中读取帐户值,然后将这些值分配给每个帐户的变量。完成此操作后,从同一文本文件读取,将以 "Account# Actiontype ActionModifier" 格式标识要对每个帐户值执行的操作。当我插入 printfs 进行检查时,正在扫描所有正确的值并存储正确的值,但是在打印正确的值之后,该值立即通过 else if 循环。当出于某种原因执行此操作时,无论如何该值都被读取为 1,并且正在执行 else if 循环中的操作,就好像它等于 1 一样。

loopState = 1;
while(loopState != 0)

{

for(i = 1;i < 100 ;i++)
    {

    if(i < 6)// This executes fine
    {
        fscanf(bankfile,"%f",&accValue);
    switch(i)
        {
            case 1:
                acc1 = accValue;
                break;
            case 2:
                acc2 = accValue;
                break;
            case 3:
                acc3 = accValue;
                break;
            case 4:
                acc4 = accValue;
                break;
            case 5:
                acc5 = accValue;
                printf("Done module one\n");
                break;

        }
    }
    else // scan for the the first value, than the second, then the third
    {
            fscanf(bankfile,"%d",&accNum);

            if(accNum != 0)
            {
                fscanf(bankfile,"%c",&accAction);

                if(accAction == 'W' || accAction == 'D')
                {
                    fscanf(bankfile,"%f",&actValue);
                    printf("%d %c %.2f\n",accNum,accAction,actValue);//this will be correct
                    printf("%d\n",accNum); //this will print say "2"

                    if(accNum = 1)//but this if statement will be run
                    {//thus printing the below printf
                        printf("If accNum = 1 this will print\n");
                        switch(accAction)
                        {
                            case 'W':
                                final1 = withdrawl(acc1,actValue);
                                break;
                            case 'D':
                                final1 = deposit(acc1,actValue);
                                break;
                         }
                     }

                     else if(accNum = 2)
                     {
                        switch(accAction)
                        {
                            case 'W':
                                final2 = withdrawl(acc2,actValue);
                                break;
                            case 'D':
                                final2 = deposit(acc2,actValue);
                                break;
                         }
                     }
                     else if(accNum = 3)
                     {
                        switch(accAction)
                        {
                            case 'W':
                                final3 = withdrawl(acc3,actValue);
                                break;
                            case 'D':
                                final3 = deposit(acc3,actValue);
                                break;
                         }
                     }
                     else if(accNum = 4)
                     {
                        switch(accAction)
                        {
                            case 'W':
                                final4 = withdrawl(acc4,actValue);
                                break;
                            case 'D':
                                final4 = deposit(acc4,actValue);
                                break;
                         }
                     }
                     else if(accNum = 5)
                     {
                        switch(accAction)
                        {
                            case 'W':
                                final5 = withdrawl(acc5,actValue);
                                break;
                            case 'D':
                                final5 = deposit(acc5,actValue);
                                break;
                         }
                     }
                }
                else if(accAction == 'B' || accAction == 'U')
                {   
                printf("%d %c\n",accNum,accAction);//this will be correct
                printf("%d\n",accNum);//this will print say "4"
                    if(accNum = 1)//but this if statement will be run
                    {//thus printing this printf below
                        printf("If accNum = 1 this will print\n");
                        switch(accAction)
                        {
                            case 'B':
                                final1 = balance(acc1);
                                break;
                            case 'U':
                                final1 = update(acc1);
                                break;
                         }
                     }

                     else if(accNum = 2)
                     {
                        switch(accAction)
                        {
                            case 'B':
                                final2 = balance(acc2);
                                break;
                            case 'U':
                                final2 = update(acc2);
                                break;
                         }
                     }
                     else if(accNum = 3)
                     {
                        switch(accAction)
                        {
                            case 'B':
                                final3 = balance(acc3);
                                break;
                            case 'U':
                                final3 = update(acc3);
                                break;
                         }
                     }
                     else if(accNum = 4)
                     {
                        switch(accAction)
                        {
                            case 'B':
                                final4 = balance(acc4);
                                break;
                            case 'U':
                                final4 = update(acc4);
                                break;
                         }
                     }
                     else if(accNum = 5)
                     {
                        switch(accAction)
                        {
                            case 'B':
                                final5 = withdrawl(acc5,actValue);
                                break;
                            case 'U':
                                final5 = deposit(acc5,actValue);
                                break;
                         }
                     }

                }
            }
            else
            loopState = 0;
    }
}
 }
    printf("Exited Loop");
}

根据我的理解,如果只有前一行被视为正确值,我看不到值在哪里被更改

你的条件语句正在赋值。

else if (accNum = 3)

应该是

else if (accNum == 3)