c-调试函数

  • 本文关键字:函数 调试 c cs50
  • 更新时间 :
  • 英文 :


在这段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();

最新更新