在这段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,%dn" , 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("%dn" , &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("losen");
}
else if (acc == 12345)
{
i = 4;
}
return i;
};
对于您的信息,每次我打印出代码时,终端都会给我相同的值,即:
info = 12341 ,"aabb" , "a1b2c3" , 5000 .
在行中
acc();
您丢弃了从函数acc()
返回的内容,并使变量i
未初始化。未初始化的非静态局部变量的值是不确定的,使用它们会调用未定义的行为。
您将不得不将函数acc()
返回的内容分配给变量i
,而不是行,如下所示:
i = acc();