求助,10pts,char*的指向突然诡异

P3955 [NOIP2017 普及组] 图书管理员

AAA404 @ 2022-07-23 21:27:16

在调的时候发现数据点1的1 2这一行的*(str+x)变成了'9'

#include<bits/stdc++.h>
#define itn int
#define tin int
#define nit int
#define tni int
#define nti int
#define scnaf scanf
#define ptrinf printf
#define icn cin
#define cni cin
#define inc cin
#define nci cin
#define nic cin
#define cuot cout
#define ocut cout
using namespace std;
char a[1001][9];
int n,q;
inline int read()
{
    char ch=getchar();
    int s=0,w=1;
    if(ch=='-'){
    w=-1;ch='0';}
    while(ch>='0' && ch<='9')
    {
        s=s*10+ch-48;
        ch=getchar();
    }
    return s*w;
}
int main()
{
//  freopen(".in","r",stdin);
 // freopen(".out","w",stdout);
    n=read();
    q=read();
    for(int i=1;i<=n;i++)
    {
        scanf("%s",&a[i]);
    }
    for(int i=1;i<=q;i++)
    {
        char b[9]={0};
        bool flag=0;
        int x;
        scanf("%d%s",&x,b);
        for(int j=1;j<=n;j++)
        {
            if(strstr(a[j],b)!=NULL)
            {
                char* str=strstr(a[j],b);
                if(*(str+x)=='\0')
                {
                    printf("%s\n",a[j]);
                    flag=1;
                    break;
                }
            }
        }
        if(flag==0)
        {
            cout<<"-1"<<endl;
        }
    }
    return 0;
}

数据点1

1 10
9392912
3 912
2 10
7 2731197
2 12
7 7163045
4 8785
7 4577297
5 75400
1 2
6 493284

望路过的dalao帮调谢谢


|