C++ 函数调用显示的错误行为
在下面的代码中,对isregistered(const struct*,int)的函数调用显示了一种错误行为,它没有进入函数定义来编译代码,它什么也不做,也没有停止程序的编译 此函数调用显示异常行为的isRegistered(const struct*,int)函数C++ 函数调用显示的错误行为,c++,function,function-calls,C++,Function,Function Calls,在下面的代码中,对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,
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;
}
bool已注册(常量前缀*p,常量字符*str,字符区域[],字符发布者[],字符标题[])
{
int a=0,b,c,i,k,m,n,flag=0,rarr;
int-arr[14];
双l,j;
int AREA 1[20]={0};
国际2区[20];
前缀pre;
pre=*p;
对于(i=0;我请。这是一个大量的代码。您能将其减少到产生错误的最小示例吗?完成..我已更新代码看起来好像有人忘记更新i
的值:)仔细看看第二个代码段中的while循环。一旦你进入该while循环,你就再也不会回来了!看看第一个代码段,我发现这个问题并不存在,尽管其中一个while循环似乎存在明显的问题。如果你在while循环中执行这个,会发生什么((哎哟..好吧,这么小的一个错误让我疯狂了好几个小时,无论如何,非常感谢。现在它工作得很好。:)
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;
}