当前位置:首页 » 编程语言 » c语言获取匹配字段
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言获取匹配字段

发布时间: 2022-05-21 19:55:59

㈠ 字符串匹配问题(c语言)

说说我的思路吧。思路清楚了写起来很简单。
首先判断循环次数为str1的长度。for(i = 0 ; i < strlen(str1) i++).通过循环长度查找与str2匹配的字符串。
从str1的第一个字符开始进行比较,里面是个小循环,for(j = 0 ; j < strlen(str2) ;j++);比较从str1开始的str2字符串的长度。如果不相等,从str1的第二个字符串开始比较,如果相等则把str3的字符替换到str1的匹配字符中去,并让循环i+strlen(str2)-1;以此类推即可实现所有的变换

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

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

请采纳,谢谢

㈢ C语言 字符串匹配

#include<stdio.h>

constcharkey[][12]={"happy","new","year","2014"};

//是否完全匹配某一个特定的key
intmatch1(constchar*s,constchar*t)
{
while(*s&&*t&&*s++==*t++);
return!(*s||*t);
}

//是否匹配一组key的中一个
intmatch(constchar*s)
{
inti,j;
for(i=0;i<sizeofkey/sizeofkey[0];i++)
if(match1(s,key[i]))
{
//如果匹配到某个key,则打印匹配到的key
for(j=0;key[i][j];j++)putchar(key[i][j]);
putchar(' ');
return1;
}
return0;
}

intmain()
{
chars[BUFSIZ];
inti,k;

//输入一个字符串
for(i=0;i<BUFSIZ&&(s[i]=getchar())!=' ';i++);
s[i]='';
match(s);
return0;
}

以上程序是判断输入的字符串是否是某个 key 中的一个。



如果不要求完全匹配,而是要求检测输入的字符串是否含有某个 key,则程序如下:

#include<stdio.h>

constcharkey[][12]={"happy","new","year","2014"};

//是否含有某一个特定的key
intmatch1(constchar*s,constchar*t)
{
constchar*p,*q,*r;
for(p=s,q=t;*p&&*q;p=r,q=t)
{
for(r=p+1;*p==*q;p++,q++);
if(*q=='')return1;
if(*p=='')return0;
}
return0;
}

//是否含有一组key的中一个
intmatch(constchar*s)
{
inti,j;
for(i=0;i<sizeofkey/sizeofkey[0];i++)
if(match1(s,key[i]))
{
//如果匹配到某个key,则打印匹配到的key
for(j=0;key[i][j];j++)putchar(key[i][j]);
putchar(' ');
return1;
}
return0;
}

intmain()
{
chars[BUFSIZ];
inti,k;

//输入一个字符串
for(i=0;i<BUFSIZ&&(s[i]=getchar())!=' ';i++);
s[i]='';

if(match(s))
{
//如果匹配到某个key,则打印输入的原始字符串
for(k=0;k<i;k++)putchar(s[k]);
putchar(' ');
}
return0;
}

㈣ c语言下如何用正则或者字符串查找匹配特定字符串并提取出来

在字符串中查找字符串是吧

#include<stdio.h>
intfun(char*str,char*find)
{
inti,j,n=0;
for(i=0;str[i];i++)
{
if(str[i]==find[0])
for(j=1;;j++)
{
if(find[j]==0)returni+1;//返回位置
if(find[j]==str[i+j])n++;
elsebreak;
}
}
return0;//不存在返回0
}
intmain()
{
charstr[]="onetwothree",find[]="two";
printf("%d ",fun(str,find));
return0;
}

㈤ c语言字符串匹配的问题

如果是求取字符串B是否是A其中的部分字串,比如A=“aaabbcdf”,B=“bcd”,此处应该返回真,需要一个嵌套循环,程序需要那么多!

㈥ c语言字符串匹配

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

㈦ c语言字符串匹配编程问题

您好,下面的程序,测试通过!欢迎探讨!
#include <iostream>
using namespace std;
void main()
{
char a[]="abc abd baf abf afb";
char b[]="abf";
char *pa = a,*pb = b;
int local=1;
while(*pa!='\0')
{
if(*pa == ' ')
local++;
if(*pb == *pa)
{
while(*pb == *pa)
{
pb++;
pa++;
}

if(*pb == '\0')
break;
else
pb = b;
}
pa++;
}
cout<<local<<endl;
system("pause");

}

如果要纯c语言,不要c++用下面的
#include <stdio.h>
void main()
{
char a[]="abc abd baf abf afb";
char b[]="abf";
char *pa = a,*pb = b;
int local=1;
while(*pa!='\0')
{
if(*pa == ' ')
local++;
if(*pb == *pa)
{
while(*pb == *pa)
{
pb++;
pa++;
}

if(*pb == '\0')
break;
else
pb = b;
}
pa++;
}
printf("%d\n",local);

}

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

  1. 如果是字符数组,可以使用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。

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

    例如:

    inta[10]={0,1,2,3,4,5,6,7,8,9,0};
    intb[3]={5,6,7};
    inti,j;
    for(i=0;i<7;i++){
    for(j=0;j<3;j++)if(a[i+j]!=b[j])break;//进行匹配,如果其中一个不匹配,中断循环。
    if(j==3){//寻找到匹配
    printf("匹配!");
    break;
    }
    }
    if(i==7){//循环完仍未找到匹配
    printf("不匹配!");
    }

㈨ C语言怎么读取txt文本并匹配输入字符串

#include <stdio.h>



int main(void)

{

char buff[101];

char name[100];

int flag = 0;

FILE *fp;


fp = fopen("D:/1.txt", "r"); // 文件路径 D:/1.txt

if (!fp)

{

printf("err ");

return 0;

}


scanf("%s", name);

while (fgets(buff, 100, fp) != NULL)

{

if (strstr(buff,name))

{

printf("1 ");

flag = 1;

break;

}

}


if (flag == 0)

{

printf("222222 ");

}


return 0;

}

㈩ C语言如何实现KMP字符串匹配

#include <stdio.h>

#include <stdlib.h>

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]) {

/**//**/next[i++] = 0;

/**/}

/**/if (i >= len) {

/**//**/return;

/**/}

/**/next[i++] = 1;

/**/for (; i < len; i++) {

/**//**/if (str[i] == str[n]) {

/**//**//**/next[i] = ++n;

/**//**/}

/**//**/else {

/**//**//**/next[i] = 0;

/**//**//**/n = 0;

/**//**/}

/**/}

}

int Strlen(const char* str) {

/**/if (str == NULL) {

/**//**/return 0;

/**/}

/**/int n = 0;

/**/while (str[n] != '') {

/**//**/++n;

/**/};

/**/return n;

}

const char* KmpFind(const char* str, const char* findstr) {

/**/if (NULL == str || NULL == findstr) {

/**//**/return NULL;

/**/}

/**/int slen = Strlen(str);

/**/if (0 == slen) {

/**//**/return NULL;

/**/}

/**/int flen = Strlen(findstr);

/**/if (0 == flen) {

/**//**/return NULL;

/**/}

/**/if (flen > slen) {

/**//**/return NULL;

/**/}

/**/int* next = (int*)malloc(sizeof(int) * flen);

/**/if (NULL == next) {

/**//**/return NULL;

/**/}

/**/KmpNextArray(findstr, flen, next);

/**/const char* p = str;

/**/int n = 0;

/**/while (p < str + slen) {

/**//**/if (findstr[n] == *p) {

/**//**//**/if (++n >= flen) {

/**//**//**//**/free((void*)next);

/**//**//**//**/return p - n + 1;

/**//**//**/}

/**//**//**/else {

/**//**//**//**/++p;

/**//**//**/}

/**//**/}

/**//**/else if (n > 0) {

/**//**//**/n = next[n - 1];

/**//**/}

/**//**/else {

/**//**//**/++p;

/**//**/}

/**/}

/**/free(next);

/**/return NULL;

}

int main(int argc, char* argv[]) {

/**/char a[100] = { 0 };

/**/char b[100] = { 0 };

/**/fgets(a, 100, stdin);

/**/fgets(b, 100, stdin);

/**///a b均带有换行符

/**/int alen = Strlen(a) - 1;

/**/int blen = Strlen(b) - 1;

/**/a[alen] = '';

/**/b[blen] = '';

/**/const char* p = KmpFind(a, b);

/**/if (NULL != p) {

/**//**/printf("%s %8d ", a, alen);

/**//**/for (int i = 0; i < (int)(p - a); i++) {

/**//**//**/putchar(' ');

/**//**/}

/**//**/printf("%0.*s %*d ", blen, p, 8 + alen - (int)(p - a) - blen, (int)(p - a));

/**/}

/**/else {

/**//**/printf("No string found! ");

/**/}

/**/return 0;

}

运行截图