c语言字符串匹配

Python013

c语言字符串匹配,第1张

1、c语言字符串匹配可以用strcmp函数

2、strcmp是比较两个字符串的大小,两个字符串相同时返回0,第一个字符串大于第二个字符串时返回一个正值,否则返回负值.

比较两个字符串的算法是:逐个比较两个串中对应的字符,字符大小按照ASCII码值确定,从左向右比较,如果遇到不同字符,所遇第一对不同字符的大小关系就确定了两个字符串的大小关系,如果未遇到不同字符而某个字符串首先结束,那么这个字符串是较小的,否则两个字符串相等。

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

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

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

请采纳,谢谢

如果是字符数组,可以使用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=0i<7i++){

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

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

   printf("匹配!")

   break

 }

}

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

   printf("不匹配!")

}