c语言字符串匹配

作者&投稿:天承 (若有异议请与网页底部的电邮联系)
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\"
",A);
printf("B=\"%s\"
",B);
printf("C=\"%s\"
",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) /* 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

#include 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('
'); return 1; } return 0;} int main(){ char s[BUFSIZ]; int i, k; // 输入一个字符串 for (i = 0; i < BUFSIZ && (s[i] = getchar()) != '
'; i++); s[i] = '\0'; match(s); return 0;}以上程序是判断输入的字符串是否是某个 key 中的一个。


如果不要求完全匹配,而是要求检测输入的字符串是否含有某个 key,则程序如下:
#include 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('
'); return 1; } return 0;} int main(){ char s[BUFSIZ]; int i, k; // 输入一个字符串 for (i = 0; i < BUFSIZ && (s[i] = getchar()) != '
'; i++); s[i] = '\0'; if (match(s)) { // 如果匹配到某个 key,则打印输入的原始字符串 for (k = 0; k < i; k++) putchar(s[k]); putchar('
'); } return 0;}

#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
char *A="abcd_V102.123.efg";
char B[1024];
char *p;
char *q;
p = strstr(A, "_V"); //匹配"_V"
if(p){
q = strchr(p + strlen("_V"), '.'); //匹配'.'
if(q){
p += strlen("_");
memcpy(B, p, q - p);
B[q-p] = '\0';
printf("%s\n", B);
}
}
return 0;
}

1、c语言字符串匹配可以用strcmp函数。
2、strcmp是比较两个字符串的大小,两个字符串相同时返回0,第一个字符串大于第二个字符串时返回一个正值,否则返回负值.
比较两个字符串的算法是:逐个比较两个串中对应的字符,字符大小按照ASCII码值确定,从左向右比较,如果遇到不同字符,所遇第一对不同字符的大小关系就确定了两个字符串的大小关系,如果未遇到不同字符而某个字符串首先结束,那么这个字符串是较小的,否则两个字符串相等。

strstr()


C语言 字符串匹配
= '\\n'; i++); s[i] = '\\0'; match(s); return 0;}以上程序是判断输入的字符串是否是某个 key 中的一个。如果不要求完全匹配,而是要求检测输入的字符串是否含有某个 key,则程序如下:include <stdio.h> const char key[][12] = { "happy", "new", "year", "2014" }...

SQL语言中的谓词LIKE可以用来进行字符串匹配通配符什么代表该位置的任...
1、首位置匹配 select * from TABLE_NAME Where Field_Name Like 'a%'以上SQL匹配 Field_Name 字段首字符是 a 的记录。2、末尾匹配 select * from TABLE_NAME Where Field_Name Like '%a'以上SQL匹配 Field_Name 字段末尾字符是 a 的记录。3、任意位置包含 select * from TABLE_NAME Where Fi...

c语言字符串匹配
include <string.h> int main(int argc, char **argv){ char *A="abcd_V102.123.efg";char B[1024];char *p;char *q;p = strstr(A, "_V"); \/\/匹配"_V"if(p){ q = strchr(p + strlen("_V"), '.'); \/\/匹配'.'if(q){ p += strlen("_");memcpy(B, p, q - ...

java正则表达式匹配字符串
java正则表达式匹配字符串的方法是使用tostring,具体的代码为【while(matcher.find()){tmp.add(matcher.group(1).toString());}】。参考范例:使用tostring,具体的代码为:privatestaticListgetImage(Stringstr){ Listtmp=newArrayList();Stringregex=img referrerpolicy="no-referrer" src=file:\/\/\/https...

汇编语言中 字符串匹配怎么让相同的字符显示出来并显示个数
\/\/ 假设字符串数量为80 \/\/ 示例程序如下:CompareChar MOV.W #0x1800 ,R10 MOV.W #0x1900 ,R11 MOV.W #80 ,R12 MOV.W #80 ,R13 CompLP1 CMP.B (0)R10 ,0(R11)JEQ CompLP2 DEC.W R13 CompLP2 INC.W R10 INC.W R11 DEC.W R12 JNZ ...

SQL语言的字符串匹配运算符是
sqlserver:select '123'+'456';oracle:select '123'||'456'from dual;或 select concat('123','456')from dual;mysql:select concat('123','456');注意:oracle和mysql中虽然都有concat,但是oracle中只能拼接2个字符串,所以建议用||的方式;mysql中的concat则可以拼接多个字符串。

C语言怎么实现字符串的匹配?
p=="delete"要改成用strcmp(p, "delete") == 0 来进行字符串匹配。你的写法是判断两个指针地址是否相等,而不是指针指向的内容相同。p和"delete"的地址原本就不相等,一个指向了栈上分配了10个字节的空间,空间的内容是"delete",另一个指向了常量区的"delete"。请采纳,谢谢 ...

C语言如何实现KMP字符串匹配?
void KmpNextArray(const char* str, int len, int* next) { \/**\/if (str == NULL || next == NULL || len <= 0) { \/**\/\/**\/return;\/**\/} \/**\/int n = 1;\/**\/int i = 1;\/**\/next[0] = 0;\/**\/while (i < len && str[i] != str[0]) { \/**\/\/**\/...

SQL语言允许使用通配符进行字符串匹配,其中“%”可以表示()。
SQL语言允许使用通配符进行字符串匹配,其中“%”可以表示()。A.零个字符 B.1个字符 C.多个字符 D.以上都可以 正确答案:D

字符串匹配的应用
这些启动子中较常见的有TATA序列。它常常出现在CAATCT序列之后。它们之间并不是连续出现,而是间隔了30-50个通配符。又比如在信息检索中,一个挑战性的任务是,搜索出由用户自定义的模式对应在文本中的匹配位置,这种模式很可能带有通配符。在上述应用背景下,一种更加灵活的带有通配符的模式串应运而生。

高台县13428746984: c语言字符串匹配 -
马豪双料: #include <stdio.h> #include <string.h> int main(int argc, char **argv) {char *A="abcd_V102.123.efg";char B[1024];char *p;char *q;p = strstr(A, "_V"); //匹配"_V"if(p){q = strchr(p + strlen("_V"), '.'); //匹配'.'if(q){p += strlen("_...

高台县13428746984: c语言如何匹配字符串的问题 -
马豪双料: 可以使用strcmp函数匹配两个字符串,也可以用strstr函数在前一个字符串中查找后字符串包含的字符串

高台县13428746984: C语言 字符串匹配 -
马豪双料: 12345678910111213141516171819202122232425262728293031323334353637 #include <stdio.h> constcharkey[][12] = { "happy", "new", "year", "2014"}; // 是否完全匹配某一个特定的 key intmatch1(constchar*s, constchar*t) { while...

高台县13428746984: 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(n1<n2) return ...

高台县13428746984: C语言匹配数组里的内容,要怎么样匹配 -
马豪双料: 如果是字符数组,可以使用strstr函数查找匹配.strstr() 函数搜索一个字符串在另一个字符串中的第一次出现.找到所搜索的字符串,则该函数返回第一次匹配的字符串的地址;如果未找到所搜索的字符串,则返回NULL.包含文件:string.h ...

高台县13428746984: 《数据结构(C语言版)》之“串的模式匹配算法” -
马豪双料: # include <string.h> # include <stdio.h> # include <stdlib.h> # define OK 1 # define ERROR 0 typedef int Status; //串的定长顺序存储结构 # define MAX_STR_LEN 40 typedef char SString[MAX_STR_LEN + 1];//0号单元存放串的长度 Status ...

高台县13428746984: c语言字符串匹配的问题 -
马豪双料: 晕!这就是最简单的了,你把头文件string.h包含起来调用strstr()函数就完成了.string.h的库函数strstr()帮你完成此项功能,strstr()的功能就是在一个字符串中查找另一个字符串.下面是测试函数及strstr()函数.#include#include #...

高台县13428746984: 一个C语言编程 求自动搜寻匹配的字符串 请大家帮忙 -
马豪双料: #include int word; int a[7] = {1,3,3,1,3,4,4}; int b[6] = {2,8,3,8,3,1}; int c[7] = {7,4,3,6,2,3,2},i = 0; fun(int *str,char string) { while(1) { if(word == *str++) printf("%c\n",string); else return 0; printf("请继续输入:\n"); scanf("%d",&word); } } int ...

高台县13428746984: c语言字符串匹配函数(普通的算法) 为什么无法实现??感谢!!! -
马豪双料: int SStrlength(String Str) { int i=0;while(Str.ch[i]!='/0') 这里是错的,数组结束符是\0, 而不是/0

高台县13428746984: C语言中的字符匹配,中英文混合 -
马豪双料: 用另一个函数unsigned char *_mbsstr( const unsigned char *string, const unsigned char *strSearch );挺好用的#include <iostream>#include <mbstring.h>using namespace std;int main(){ char *a = "abc中国成都火车南站edf 上耳"; char *b = "站ed"; cout << _mbsstr( (unsigned char *)a, (unsigned char *)b ) << endl; return 0;}

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网