Pointers 如何添加'\0';在使用指针引用的字符串的末尾?
我想检查字符串b是否是字符串a的后缀。到目前为止,我已经尝试过: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); } 我打开了调试器,看到当程序到达这一行
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')