函数调用显示的错误行为

时间:2014-02-01 02:40:13

标签: 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,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;
}

0 个答案:

没有答案