Pointers 如何添加'\0';在使用指针引用的字符串的末尾?

Pointers 如何添加'\0';在使用指针引用的字符串的末尾?,pointers,char,nul,Pointers,Char,Nul,我想检查字符串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); } 我打开了调试器,看到当程序到达这一行

我想检查字符串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')
它永远不会验证为true,因为p+strlen(b)不是\0,只是\


如何将\0添加到p所指内容的末尾?

您需要删除正在计算的指针:

或者

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


应该这样做。

我应该使用哪个库进行strstrstr?Cstring或String.h似乎对我不起作用。你是对的。它是linux上通过sstrings2.h提供的非标准函数,可能必须使用-lsstrings2:链接。因此,我已将其从我的答案中删除。
if(p[strlen(b)] == '\0')