今天给各位分享字符串中匹配c语言的知识,其中也会对c++匹配字符串进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、C语言怎么实现字符串的匹配?2、C语言 字符串匹配3、c语言字符串匹配问题4、c语言字符串匹配的问题5、字符串匹配问题 C语言 真心求教
C语言怎么实现字符串的匹配?
p==”delete”要改成用strcmp(p, “delete”) == 0 来进行字符串匹配。
你的写法是判断两个指针地址是否相等,而不是指针指向的内容相同。
p和”delete”的地址原本就不相等,一个指向了栈上分配了10个字节的空间,空间的内容是”delete”,另一个指向了常量区的”delete”。
请采纳,谢谢
C语言 字符串匹配
#include stdio.h
const char key[][12] = { “happy”, “new”, “year”, “2014” };
// 是否完全匹配某一个特定的 key
int match1(const char *s, const char *t)
{
while (*s *t *s++ == *t++);
return !(*s || *t);
}
// 是否匹配一组 key 的中一个
int match(const char *s)
{
int i, j;
for (i = 0; i sizeof key / sizeof key[0]; i++)
if (match1(s, key[i]))
{
// 如果匹配到某个 key,则打印匹配到的 key
for (j = 0; key[i][j]; j++) putchar(key[i][j]);
putchar(‘\n’);
return 1;
}
return 0;
}
int main()
{
char s[BUFSIZ];
int i, k;
// 输入一个字符串
for (i = 0; i BUFSIZ (s[i] = getchar()) != ‘\n’; i++);
s[i] = ‘\0’;
match(s);
return 0;
}
以上程序是判断输入的字符串是否是某个 key 中的一个。
如果不要求完全匹配,而是要求检测输入的字符串是否含有某个 key,则程序如下:
#include stdio.h
const char key[][12] = { “happy”, “new”, “year”, “2014” };
// 是否含有某一个特定的 key
int match1(const char *s, const char *t)
{
const char *p, *q, *r;
for (p = s, q = t; *p *q; p = r, q = t)
{
for (r = p + 1; *p == *q; p++, q++);
if (*q == ‘\0’) return 1;
if (*p == ‘\0’) return 0;
}
return 0;
}
// 是否含有一组 key 的中一个
int match(const char *s)
{
int i, j;
for (i = 0; i sizeof key / sizeof key[0]; i++)
if (match1(s, key[i]))
{
// 如果匹配到某个 key,则打印匹配到的 key
for (j = 0; key[i][j]; j++) putchar(key[i][j]);
putchar(‘\n’);
return 1;
}
return 0;
}
int main()
{
char s[BUFSIZ];
int i, k;
// 输入一个字符串
for (i = 0; i BUFSIZ (s[i] = getchar()) != ‘\n’; i++);
s[i] = ‘\0’;
if (match(s))
{
// 如果匹配到某个 key,则打印输入的原始字符串
for (k = 0; k i; k++) putchar(s[k]);
putchar(‘\n’);
}
return 0;
}
c语言字符串匹配问题
输入字符串要用gets(str2);
for循环只能判断第一个字符是否匹配,不能判断串匹配
c语言字符串匹配的问题
晕!这就是最简单的了,你把
头文件
string.h包含起来调用strstr()函数就完成了。
string.h的
库函数
strstr()帮你完成此项功能,strstr()的功能就是在一个字符串中查找另一个字符串。下面是测试函数及strstr()函数。
#include
#include
#include
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
/*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)
/*
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
字符串匹配问题 C语言 真心求教
给你提供两种思路 第一种:假设他们的优先级是4 、3( )、2[ ]、1{ } 。{}的优先级是4最小 范围最大。
1.循环 int fun1(char ch)返回优先级int类型,
2.并fun2()判断字符串len-index(ch)处的字符是不是与之匹配
3.每次判断下一个字符的优先级是不是大于返回的 不是结束 是继续循环 循环的条件是字符的长度一半
4.可以在开始前判断字符串的长度是不是偶数
第二种方法类似 但是简单的多 假设他们的优先级是4 、 -4、3( 、 -3)、2[ 、 -2]、1{ 、-1}
1.可以先判断字符串的长度是不是偶数
2.先把字符串边成一个按照上面的对应关系变成int型的数组
3.在判断前一半是不是有序
4..首尾依次相加是不是都等于0
是0就 ok 不是就NO
字符串中匹配c语言的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c++匹配字符串、字符串中匹配c语言的信息别忘了在本站进行查找喔。