调试函数

Debugging a function

在这段 C 代码中,我试图提取出用户的信息。这段代码有两部分:一个是获取正确的账户值,另一个是打印出用户信息。

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

int acc();

这部分是存储信息的,必须用i提取信息;从第二部分得到 i 值后,代码将打印出用户信息。

int main()
{   
    int i ;
    acc();
    int acc[6] = {12341 ,12342 ,12342 ,12344,12345 };
    string name[6] = {"aabb" , "ccdd" ,"eeff","gghh","iijj"};
    string password[6] = {"a1b2c3" , "a2b2c3" ,"A3b2c3" , "A4b2c3" , "A5b2c3" };
    int initial[6] =  {5000 , 1000 , 25000 , 700 , 100000};

    printf("info = %d,%s,%s,%d\n" , acc[i] ,name[i] , password[i] , initial[i]);
    return 0;
}

在这部分中,代码试图获取用户输入,帐户号,如果帐户正确,则会设置 i 值。

int acc()
{
    // finding the account and the other information 
    int acc , i ; 

    printf("Account number: ");
    scanf("%d\n" , &acc);

    if (acc == 12341)
    { 
        i = 0 ;
    }
    else if (acc == 12342)
    {
        i = 1; 
    }
    else if (acc == 12343)
    {
        i = 2;
    }
    else if (acc == 12344)
    {
        i = 3;
        printf("lose\n");
    }
    else if (acc == 12345)
    {
        i = 4;
    }
    return i;
};

关于您的信息,每次我打印出代码时,终端总是给我相同的值,即:

info = 12341 ,"aabb" , "a1b2c3" , 5000 . 

在这一行

    acc();

您正在丢弃从函数 acc() 返回的内容,并使变量 i 未初始化。 未初始化的 non-static 局部变量的值是不确定的,使用它们会调用 未定义的行为

您必须将函数 acc() 的返回值分配给变量 i,而不是该行,如下所示:

    i = acc();