p***p 发帖数: 559 | 1 【 以下文字转载自 PKU 讨论区 】
【 原文由 pingp 所发表 】
unix c 里面要比较字符串
char *a,char *b,
*b是否是*a它的结尾(比如 "abcdef"和"ef"就是)
如何写表达式 | t*********l 发帖数: 30 | 2 这个不好但是能用:
#include
int tail(const char *s1, const char *s2)
{
int l1, l2;
char *p;
l1 = strlen(s1);
l2 = strlen(s2);
if (l2 > l1)
return l2-l1;
p = s1+(l1-l2);
return(strncmp(p,s2,l2));
}
【在 p***p 的大作中提到】 : 【 以下文字转载自 PKU 讨论区 】 : 【 原文由 pingp 所发表 】 : unix c 里面要比较字符串 : char *a,char *b, : *b是否是*a它的结尾(比如 "abcdef"和"ef"就是) : 如何写表达式
| T********r 发帖数: 6210 | 3 try this one:
char* ptr;
if (ptr = strstr (b, a)) {
if (ptr+strlen(b) == (a+strlen(b))
return (TRUE);
}
return (FALSE);
【在 p***p 的大作中提到】 : 【 以下文字转载自 PKU 讨论区 】 : 【 原文由 pingp 所发表 】 : unix c 里面要比较字符串 : char *a,char *b, : *b是否是*a它的结尾(比如 "abcdef"和"ef"就是) : 如何写表达式
| t*********l 发帖数: 30 | 4 那个ptr+strlen(b) 是不是应改成 ptr+strlen(a) ?
a+strlen(b) 应改为b+strlen(b), 因为前面你用
strstr(b,a)搜索b 中有没有 a. 另外如果改为
if (*(ptr+strlen(a)) == '\0'), 哈哈, 只有
两个函数调用, 好:)))
【在 T********r 的大作中提到】 : try this one: : char* ptr; : if (ptr = strstr (b, a)) { : if (ptr+strlen(b) == (a+strlen(b)) : return (TRUE); : } : return (FALSE);
| T********r 发帖数: 6210 | 5 yeah, you are right, I made a mistake in last post. //shame
should be:
if (ptr = (strstr (a, b)) {
if (ptr+strlen(a) == (b+strlen(a))
return (TRUE);
}
return (FALSE);
【在 t*********l 的大作中提到】 : 那个ptr+strlen(b) 是不是应改成 ptr+strlen(a) ? : a+strlen(b) 应改为b+strlen(b), 因为前面你用 : strstr(b,a)搜索b 中有没有 a. 另外如果改为 : if (*(ptr+strlen(a)) == '\0'), 哈哈, 只有 : 两个函数调用, 好:)))
|
|