したがって、私はこの問題に数時間取り組んでおり、何が問題なのかわかりません。呼び出された int が有効な場合、この関数は true または false を返します。1桁の長さの有効な番号を呼び出すと、「0」または「1」がtrueを返します。しかし、「83」や「955」のように真を返すはずの1桁以上の数字を呼び出すと、真を返すはずなのに常に偽を返します!
私のバリデータ機能:
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 を返しています。
true の '0' または '1' を呼び出すと、true が返されますが、1 桁より大きい場合は常に false が返されます。理由を知っている人はいますか?