當前位置:首頁 » 編程語言 » 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;

}

運行截圖