1

ドキュメントで特定のチャンクを検索するアルゴリズムを作成しようとしています。チャンクが見つかった場合は 1 が返され、そうでない場合は 0 が返されます。基本的に、チャンクが「abcd」で特定の長さが 2 の場合、チャンクは「ab」と「cd」に分割されます。次に、ドキュメントを検索して、「ab」または「cd」が存在するかどうかを確認します。私のアルゴリズムはほとんど問題ないと思いますが、プログラムがクラッシュし続けます。strncmpに関係していると思いますが、修正方法がわかりません。

これが私のコードです:

int main( )
{
         char s1[] = "abcdef";
         char s3[] = "cd";
         size_t s1Size = strlen(s1);
         int k = 2;

         if(simple_substr_match(s3,k,s1,s1Size))
            printf("Match Found\n");
         else
            printf("No Match Found\n");
         return 0;  
}

int simple_substr_match(const unsigned char *ps, int k, const unsigned char *ts, int n)
{
        int isMatch; 
        int i;
        int j; 

        for(i=0;i<n;i++)
        {
           if(strncmp(ts[i], ps, k))
           {
              isMatch = 1; 
           }
        }

        return isMatch; 

}
4

2 に答える 2

0

strcmp は文字列を比較します

使用するstrstr(buffer, s1) != null

http://en.cppreference.com/w/c/string/byte/strstr

于 2013-09-18T22:01:37.680 に答える
0

使用: if(strncmp(&ts[i], ps, k)) または if(strncmp(ts+i, ps, k))

警告に注意してください。ts[i] を使用することで、char である値を逆参照して比較します。strncmp にはアドレスが必要です [もちろん適切なメモリを使用して]

于 2013-09-19T01:03:57.373 に答える