gpt4 book ai didi

c - 我在与 c 中的整数值进行比较时遇到问题。无法使用 '==' 运算符进行比较

转载 作者:行者123 更新时间:2023-11-30 20:52:54 24 4
gpt4 key购买 nike

我在比较 c 中的整数时遇到了问题。通常可以使用“==”运算符检查两个整数值。但我无法弄清楚我的代码有什么问题。

  struct customerdata
{
int accno;
char name[40];
int balance;

}maxcust[200] = {
02201002, "Ayush", 90,
02201000, "Raman", 1000,
01022001, "Hari", 50,
02103405, "Kiran", 12
};
int checkacc(int acc, char names[])
{
int i;
for(i = 0; i < 200; i++){
if((strcmp(maxcust[i].name, names) == 0) &&
maxcust[i].accno == acc)
return 1;
}

return 0;
}

int main()
{
int acc, d, withdraw, amount;
char checkname[40];
printf("Enter acc number: ");
scanf("%d", &acc);
fflush(stdin);
printf("Enter username: ");
scanf("%s", checkname);
fflush(stdin);
d =checkacc(acc, checkname);
if(d == 1)
{
printf("Username and acc matched... ");

}
else if (d == 0)
printf("Wrong acc number or name....");

return 0;
}

在此代码中,即使我输入结构体中提到的相同的 acc 编号和 acc 名称,checkacc 函数也始终返回 0。

(抱歉我的英语不好。希望你能明白我的意思。)

最佳答案

问题在于您的结构是用八进制(以 8 为基数)值初始化的,而不是以 10 为基数的值。当您 scanf 时,您正在读取以 10 为基数的值,因此相等比较失败。

02201002, "Ayush", 90,
02201000, "Raman", 1000,
01022001, "Hari", 50,
02103405, "Kiran", 12

数字前面的 0 表示它应该被解释为以 8 为基数的值,而不是以 10 为基数的值。如果你运行下面的小程序,并传递02201002,你就可以看到你的问题:

#include <stdio.h>

int main(void)
{
int number = 02201002;
printf("number: %d\n", number);

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

return 0;
}

执行程序时,给出:

$ ./octal_test
number: 590338
02201002
number: 2201002

关于c - 我在与 c 中的整数值进行比较时遇到问题。无法使用 '==' 运算符进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55471640/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com