在下面的代码中,对isregistered(const struct *,int)的函数调用显示了一个错误的行为,而不是进入函数定义来编译代码,它没有做任何事情,也没有停止编译程序。
此函数调用isRegistered(const struct *,int)函数,该函数显示异常行为。
bool isRegistered(const Prefix* p, const char* str, char area[],char publisher[], char title[])
{
int a=0,b,c,i,k,m,n,flag=0,rarr;
int arr[14];
double l,j;
int area1[20]={0};
int area2[20];
Prefix pre;
pre=*p;
for(i=0;i<13;i++)
{
arr[i]=str[i]-48;
}
a=arr[0]*100+arr[1]*10+arr[2];
if((a==978)||(a==979))
flag++;
k=0;
i=7;
n=4;
m=0;
while(m<5)
{
i=i-k;
j=0;
while(i>2)
{
l=pow(10,j);
area1[k]+=arr[i]*l; /*+a[i-1]*10*1+a[i-2]*10*10+a[i-3]*10*10*10+a[i-4]*10*10*10*10;*/
i--;
j++;
}
i=7;
area2[n]=area1[k];
k++;
n--;
m++;
}
i=0;
while((i<5)||(a==1))
{
rarr=area2[i];
cout<<rarr<<endl;
//if(isRegistered(&pre, rarr)==1)
//return 1;
//Here this is the problem area .
b=isRegistered(&pre ,rarr); ***The erroneous behaviour occurs here. ***
i++;
}
cout<<endl;
//isRegistered(const Prefix* p, int area, const char* publisher)
return a;
}
这是isRegistered(const struct *,int)
的函数定义bool isRegistered(const Prefix* pre, int area)
{
cout<<"hello";
int i=0,flag;
cout<<"hello";
if(area<8)
{
return 1;
}
else
{
while(i<615)
{
if(area==(pre->area[i]))
{
flag=1;
}
else
{
flag=0;
}
}
}
if(flag==1)
return 1;
else
return 0;
}