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

C语言怎么实现字符串的匹配?

p=="delete"要改成用strcmp(p, "delete") == 0 来进行字符串匹配。

创新互联主营怀宁网站建设的网络公司,主营网站建设方案,手机APP定制开发,怀宁h5微信平台小程序开发搭建,怀宁网站营销推广欢迎怀宁等地区企业咨询

你的写法是判断两个指针地址是否相等,而不是指针指向的内容相同。

p和"delete"的地址原本就不相等,一个指向了栈上分配了10个字节的空间,空间的内容是"delete",另一个指向了常量区的"delete"。

请采纳,谢谢

C语言匹配数组里的内容,要怎么样匹配

如果是字符数组,可以使用strstr函数查找匹配。

strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。找到所搜索的字符串,则该函数返回第一次匹配的字符串的地址;如果未找到所搜索的字符串,则返回NULL。

包含文件:string.h

函数名: strstr

函数原型:

extern char *strstr(char *str1, const char *str2);

语法:

char * strstr(str1,str2)

str1: 被查找目标 string expression to search.

str2: 要查找对象 The string expression to find.

返回值:若str2是str1的子串,则先确定str2在str1的第一次出现的位置,并返回此str1在str2首位置的地址。;如果str2不是str1的子串,则返回NULL。

如果是普通类型的数组,需要使用双重循环来实现匹配。

例如:

int a[10]={0,1,2,3,4,5,6,7,8,9,0};

int b[3]={5,6,7};

int i,j;

for(i=0;i7;i++){

for(j=0;j3;j++) if(a[i+j]!=b[j]) break; //进行匹配,如果其中一个不匹配,中断循环。

if(j==3){    //寻找到匹配

printf("匹配!");

break;

}

}

if(i==7){    //循环完仍未找到匹配

printf("不匹配!");

}

c语言字符串函数有哪些

复制相关函数:memcpy、memmove、strcpy、strncpy

字符串连接函数:strcat、strncat

字符串比较函数:memcmp、strcmp、strcoll、strncmp、strxfrm、

查找函数:memchr、strchr、strcspn、strpbrk、strrchr、strspn、strstr、strtok

其他相关函数:memset、strerror、strlen

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语言字符串匹配函数 字符串的匹配 c
标题链接:http://lszwz.com/article/ddojihj.html

其他资讯

售后响应及时

7×24小时客服热线

数据备份

更安全、更高效、更稳定

价格公道精准

项目经理精准报价不弄虚作假

合作无风险

重合同讲信誉,无效全额退款