1

文字列 b が文字列 a のサフィックスかどうかを確認したい。私はこれまでにこれを試しました:

    char a[20], b[20];
    char *p;
    gets(a);
    gets(b);

    p = strstr(a,b);
    while(p != NULL)
    {
        if(p + strlen(b) == '\0')
            break;
        p = strstr(p+1, b);
    }

デバッガーを開いて、プログラムがこの行に到達したときに次のことを確認しました。

if(p + strlen(b) == '\0')

p + strlen(b) は \0 ではなく単なる \ であるため、true と検証されることはありません。

p が指しているものの最後に \0 を追加するにはどうすればよいですか?

4

1 に答える 1

1

計算しているポインターを defernce する必要があります。

また

if(*(p + strlen(b)) == '\0')

また

if(p[strlen(b)] == '\0')

するべきです。

于 2014-02-07T21:50:50.690 に答える