回覆列表
  • 1 # 白色秋天品茗似水浮生

    輸入格式不對和輸入緩衝區太小,字串,是以\0為結果,但不一定不含空白符,scanf()的%s只輸入不含空白符的,會在空白符處斷做多個串,測試資料可能是一段文字,很多個單詞長度可以遠越過101位元組

    chara[10240],b[10240];//一個串長達10K,足夠了

    while(scanf("%s%s",&a,&b)!=EOF)//輸入格式不好

    可以試著改為:

    while(gets(a)&&gets(b))

    多利用一下標準庫函式如strlen()memcmp()算了,我還是寫個完整的吧

    ///////////////////

    #include<stdio.h>

    #defineMAXLEN10240

    intmain()

    {

    chara[MAXLEN],b[MAXLEN];

    inti,c,len,sublen;

    while(gets(a)&&gets(b))//while(scanf("%s%s",&a,&b)!=EOF)

    {

    c=0;

    len=strlen(a);

    sublen=strlen(b);

    if(!sublen)continue;//防止子串長度為0

    for(i=0;i<len-sublen;i++)

    {

    if(memcmp(&a[i],b,sublen)==0)

    {

    c++;

    i+=sublen-1;//如果"aaaa"可以當做不止兩個"aa"則不要當前一行

    }

    }

    printf("%d\n",c);

    }

    return0;

    }

  • 中秋節和大豐收的關聯?
  • 主角是蘇陽的玄幻小說?