所以我已经解决这个问题几个小时了,我不知道出了什么问题。如果调用的 int 是有效的,则此函数返回 true 或 false。当我调用一个 1 位长的有效数字时,“0”或“1”返回 true。但是,当我调用一个大于 1 位的数字(例如应该返回 true 的“83”或“955”)时,即使它应该返回 true,它也总是返回 false!
我的验证器功能:
int isRegistered(FILE* file, int area) {
int areaDigit = 0;
int check = 0;
while(fscanf(file, "%d %*[^ ] %*[^\n]", &areaDigit) != EOF)
{
if (area == areaDigit)
check = 1;
}
return check;
以及调用该函数的代码:
for ( i = 0; i < areaCounter; i++)
{
cout << areaInt << endl;
areaCheck = isRegistered(file, areaInt);
if (areaCheck != 1)
areaInt = areaInt * 10 + areaIntA[i+1];
}
如果 areaIntA[3] 的值 = 955,则循环调用 9,然后是 95,然后是 955,直到它不再有要调用的数字。955 应该返回 true,因为该值是 true,但由于某种原因它返回 false。
当我调用为真的“0”或“1”时,它返回真,但对于任何大于 1 位的数字,它总是返回假。有谁知道为什么?