c语言字符串匹配的问题
各位大哥,小弟是c语言菜鸟,我想求一个程序,要求是对一个给定的char*字符串A,用另一个char*的字符串B对其进行匹配搜索,假如A中有B的子串,则返回真,否则为假,求...
各位大哥,小弟是c语言菜鸟,我想求一个程序,要求是对一个给定的char*字符串A,用另一个char*的字符串B对其进行匹配搜索,假如A中有B的子串,则返回真,否则为假,求高手们帮忙给个完整的程序。
DesireFish,小弟谢谢你,这是15分,请笑纳。。。。。。。。 展开
DesireFish,小弟谢谢你,这是15分,请笑纳。。。。。。。。 展开
2个回答
展开全部
晕!这就是最简单的了,你把头文件string.h包含起来调用strstr()函数就完成了。
string.h的库函数strstr()帮你完成此项功能,strstr()的功能就是在一个字符串中查找另一个字符串。下面是测试函数及strstr()函数。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void) /*测试strstr()*/
{
char *A="abcdefghi",*B,*C;
B = (char*)malloc(10);
memset(B, 0, sizeof(B));
C = (char*)malloc(10);
memset(C, 0, sizeof(C));
B[0]='f';B[1]='g';B[2]='h';
C = strstr(A,B);
printf("A=\"%s\"\n",A);
printf("B=\"%s\"\n",B);
printf("C=\"%s\"\n",C);
return 0;
}
#if 0
/*strstr()函数的返回值为s中匹配字窜的地址*/
char * strstr
(
const char * s, /* string to search */
const char * find /* substring to look for */
)
{
char *t1;
char *t2;
char c;
char c2;
if ((c = *find++) == 0) /* <find> an empty string */
return ((char *)(s));
for (;;)
{
while (((c2 = *s++) != 0) && (c2 != c))
;
if (c2 == 0)
return (NULL);
t1 = (char *)(s);
t2 = (char *)(find);
while (((c2 = *t2++) != 0) && (*t1++ == c2))
;
if (c2 == 0)
return ((char *)(s - 1));
}
}
#endif
string.h的库函数strstr()帮你完成此项功能,strstr()的功能就是在一个字符串中查找另一个字符串。下面是测试函数及strstr()函数。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void) /*测试strstr()*/
{
char *A="abcdefghi",*B,*C;
B = (char*)malloc(10);
memset(B, 0, sizeof(B));
C = (char*)malloc(10);
memset(C, 0, sizeof(C));
B[0]='f';B[1]='g';B[2]='h';
C = strstr(A,B);
printf("A=\"%s\"\n",A);
printf("B=\"%s\"\n",B);
printf("C=\"%s\"\n",C);
return 0;
}
#if 0
/*strstr()函数的返回值为s中匹配字窜的地址*/
char * strstr
(
const char * s, /* string to search */
const char * find /* substring to look for */
)
{
char *t1;
char *t2;
char c;
char c2;
if ((c = *find++) == 0) /* <find> an empty string */
return ((char *)(s));
for (;;)
{
while (((c2 = *s++) != 0) && (c2 != c))
;
if (c2 == 0)
return (NULL);
t1 = (char *)(s);
t2 = (char *)(find);
while (((c2 = *t2++) != 0) && (*t1++ == c2))
;
if (c2 == 0)
return ((char *)(s - 1));
}
}
#endif
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询