c语言中匹配字符串的函数 c语言 字符串匹配

C语言中string.h中用到的字符串处理函数有哪些???1.函数名: stpcpy
功能: 拷贝一个字符串到另一个
2.函数名: strcat
功能: 字符串拼接函数
3.函数名: strchr
功能: 在一个串中查找给定字符的第一个匹配之处\
4.函数名: strcmp
功能: 串比较
5.函数名: strncmpi
功能: 将一个串中的一部分与另一个串比较, 不管大小写
6.函数名: strcpy
功能: 串拷贝
7.函数名: strcspn
功能: 在串中查找第一个给定字符集内容的段
8.函数名: strdup
功能: 将串拷贝到新建的位置处
9.函数名: stricmp
功能: 以大小写不敏感方式比较两个串
10.函数名: strerror
功能: 返回指向错误信息字符串的指针
11函数名: strcmpi
功能: 将一个串与另一个比较, 不管大小写
12函数名: strncmp
功能: 串比较
13函数名: strncmpi
功能: 把串中的一部分与另一串中的一部分比较, 不管大小写
14函数名: strncpy
功能: 串拷贝
15函数名: strnicmp
功能: 不注重大小写地比较两个串
16函数名: strnset
功能: 将一个串中的所有字符都设为指定字符
17函数名: strpbrk
功能: 在串中查找给定字符集中的字符
18函数名: strrchr
功能: 在串中查找指定字符的最后一个出现
19函数名: strrev
功能: 串倒转
20函数名: strset
功能: 将一个串中的所有字符都设为指定字符
21函数名: strspn
功能: 在串中查找指定字符集的子集的第一次出现
22函数名: strstr
功能: 在串中查找指定字符串的第一次出现
23函数名: strtod
功能: 将字符串转换为double型值
24函数名: strtok
功能: 查找由在第二个串中指定的分界符分隔开的单词
25函数名: strtol
功能: 将串转换为长整数
26函数名: strupr
功能: 将串中的小写字母转换为大写字母
27函数名: swab
功能: 交换字节
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; isizeof 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; iBUFSIZ(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 = p1; *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; isizeof 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; iBUFSIZ(s[i] = getchar()) != '\n'; i);
s[i] = '\0';
if (match(s))
{
// 如果匹配到某个 key,则打印输入的原始字符串
for (k = 0; ki; k) putchar(s[k]);
putchar('\n');
}
return 0;
}
C语言:我的字符串匹配函数我这里运行,没有运行时错误,只是按你的代码结果不对 。
调整后代码如下:
#include stdio.h
#include string.h
char *strstr(char*str1,char*str2)
{
int n1 = strlen(str1);
int n2 = strlen(str2);
int flg = 0;
char *p1 = str1;
char *p2 = str2;
if(n1n2) return NULL;
int i;
for(i=0;in1-n2 1;i)
{
p1 = str1 i;
p2 = str2;
while(*p2!=NULL)//
{
if(*p1!=*p2)
{
flg = 0;
p1;
p2;
break;
}
p1;
p2;
flg = 1;
}
if(flg) return str1 i;//你到底要输出什么,原函数是输出位置int
}
return NULL;//
}
int main()
{
char str1[]="str1adsfqwer";
char str2[]="ads";
char *p = strstr(str1,str2);
printf("%s\n",p);
return 0;
}
c语言字符串匹配的问题晕!这就是最简单的c语言中匹配字符串的函数了,c语言中匹配字符串的函数你把
头文件
string.h包含起来调用strstr()函数就完成c语言中匹配字符串的函数了 。
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语言如何匹配字符串的问题奇怪,怎么换不了行?
你后面两个href打错了,是要取出href=https://www.04ip.com/post/后面引号所包含的内容,即:
/tmp/a
/tmp/b
/tmp/c
这3个内容 。
代码如下:
#include stdio.h
#include stdlib.h
#include string.h
int main( int argc, char* argv[] )
{
char buf[1024] = "adfafasdfasdfhref=https://www.04ip.com/"/tmp/a\" ad234 adf adf adshref=https://www.04ip.com/"/tmp/b\" 234asdfkljaldkfhref=https://www.04ip.com/"/tmp/c\" " ;
const char tok[] = "href="https://www.04ip.com/post/;
char *p = buf;
char *tmp = strstr(p, tok);// 查找字符串href=https://www.04ip.com/post/
char *c1, *c2;
while( tmp != NULL )
{
c1 = strchr( tmp, '"' );// 查找href后的第1个引号
if( c1 != NULL ) c2 = strchr( c11, '"' ); // 查找href后的第2个引号
if( c1 != NULLc2 != NULL )
{
char *href = https://www.04ip.com/post/(char*)calloc( c2 - c11, sizeof(char) ); // 动态分配内存
strncpy( href, c11, c2 - c1 - 1 ); // 在此处取出href
printf( "href: %s\n", href );// 输出href
free( href ); // 释放内存
}
p = p( tmp - p1 ) ;
tmp = strstr( p, tok );// 查找下一个href=https://www.04ip.com/post/
}
return 0;
}
C语言怎么实现字符串的匹配?p=="delete"要改成用strcmp(p, "delete") == 0 来进行字符串匹配 。
你的写法是判断两个指针地址是否相等 , 而不是指针指向的内容相同 。
p和"delete"的地址原本就不相等,一个指向了栈上分配了10个字节的空间,空间的内容是"delete",另一个指向了常量区的"delete" 。
请采纳 , 谢谢
【c语言中匹配字符串的函数 c语言 字符串匹配】c语言中匹配字符串的函数的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于c语言 字符串匹配、c语言中匹配字符串的函数的信息别忘了在本站进行查找喔 。

    推荐阅读