c语言字符串匹配问题

作者&投稿:枝倩 (若有异议请与网页底部的电邮联系)
c语言字符串匹配问题~

#include

#include

#include
#include

#define MAXSIZE 10240

#define WORDSIZE 256

int main()

{

int isCaseSensitive , totalInput , totalLength=0, length;

int i = 0 ;

char* line_addr, *lines_ , *line_addr_;

char lines[MAXSIZE];

char word[WORDSIZE];

lines_ = lines;
scanf("%s
",word);//输入要查找的字符串S

scanf("%d
",&isCaseSensitive);//是否大小写敏感

scanf("%d
",&totalInput);//多行文字的行数
for(line_addr=lines;i<totalInput; i++){//输入多行文字
gets(line_addr);

length = strlen(line_addr);

line_addr += length + 1;

totalLength += length + 1;

}

//大小写不敏感,全部当成小写对待
if(!isCaseSensitive){

i = 0;

while(word[i]){
word[i] = tolower(word[i]);
i++;
}
lines_ = (char*)malloc(totalLength);
for(i=0 ; i< totalLength; i++){
lines_[i] = tolower(lines[i]);
}

}

i = 0;

line_addr = lines ;
line_addr_ = lines_;
while(i < totalInput){

if(strstr(line_addr_,word) != NULL){//查找是否包含了字符串S
puts(line_addr);
}

line_addr += strlen(line_addr) + 1;
line_addr_ += strlen(line_addr_) + 1;
i ++ ;

}
return 0;
}

在c语言中定义字符串:
C语言中用字符型CHAR来表示存储字符,没有C++里面的可以单独的字符串类型String;
所以C里面使用字符数组和字符指针来实现字符串功能;
C的字符数组只能在定义时一起赋值,以后只能给单个元素一一赋值;
char string0[10];
char string1[]="prison break";
char string2[100]="michael scofield";
1句表示定义个长度为10的字符串,但未赋值,2句表示定义了一个字符数组string1,并进行初始化,使得其长度自动为13(字符串”prison break"中的字符个数加上结尾的'\0'),3句定义了一个有100个元素的字符数组string2,并初始化了17个元素("michael scofield";加上结尾的'\0')。
C语言本身是没有设置一种类型来定义字符串变量的,字符串的存储完全依赖于字符数组,但字符数组又不等于是字符串变量。在字符型一维数组存放字符串,并规定以字符'\0'作为字符串结束标志。

  1. 输入字符串要用gets(str2);

  2. for循环只能判断第一个字符是否匹配,不能判断串匹配



(char str1[28],str2[30];
int i;
str1[28]={"hello world!goodbye world!"};)有错 str1只能在定义的时候直接赋值,不能先定义后赋值
所以char str1[28]={"hello world!goodbye world!"}

char str1[28]="hello world!goodbye world!";

把花括号去掉




易语言怎样判断一个字符串是否匹配一个正则表达式
.子程序 _按钮1_被单击 .局部变量 表达, 正则表达式 .局部变量 结果, 搜索结果, , "0".局部变量 I, 整数型 表达.创建 (“[a-z]”, 真)结果 = 表达.搜索全部 (编辑框1.内容)编辑框2.内容 = “”.计次循环首 (取数组成员数 (结果), I)编辑框2.加入文本 (结果 [I].取匹配文本 ...

c语言下如何用正则或者字符串查找匹配特定字符串并提取出来
在字符串中查找字符串是吧 include<stdio.h>int fun(char *str,char *find){int i,j,n=0; for(i=0;str[i];i++) { if(str[i]==find[0]) for(j=1;;j++) { if(find[j]==0)return i+1;\/\/返回位置 if(find[j]==str[i+j])n++; else break; ...

求正则公式,无论输入什么字符无论多长都会匹配
匹配任意字符 [\\s\\S]* 或者 [\\w\\W]正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了...

C语言的switch case 语句的case 常量 能匹配字符串常量吗?
不可以匹配字符串长量的.最大可以匹配一个int型的变量或常量.switch 里面一般是填变量名.大概是这样 int a;switch(a){ case 1: break;case 2:break;default: break;}

哪位高手请帮一下忙,用C语言编程,两个字符串数组s1,s2,将s1中任意与s...
include <stdio.h> include <stdlib.h> int main(int argc, char *argv[]){ int i,j,k=0;char s1[80],s2[80],s3[80];gets(s1);gets(s2);for(i=0;s1[i]!='\\0';i++){ for(j=0;s2[j]!='\\0';j++){ if(s1[i]==s2[j])\/\/如果相等则代表匹配了字符,则退出内层循环...

正则表达式,匹配特定字符后面的内容
如果前面是固定的“姓名:”的话,试试(?<=姓名:).*?(?=,\\d{11})。正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

用汇编语言设计程序,比较两个字符串str1和str2,找出他们不相匹配的位置...
呵呵,用汇编忘完了。C,C++倒是可以给你写一个。

C语言,编写函数squeeze(s1,s2),将字符串s1中任何与字符串s2中匹配的...
='\\0'&&s2[j]!=s1[i];j++);if (s2[j]=='\\0')s1[k++]=s1[i];} s1[k]='\\0';printf("s1中去除与s2相同的符号后剩下的是%s\\n",s1);} main(){ char s1[20]="hello world!";char s2[20]="how are you?";squeeze(s1,s2);} 这样就对了,字符串数组的初始化错了。

正则表达式所表示的语言
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。例如:runoo+b,可以匹配 runoob、runooob、runoooooob 等,+ 号代表前面的字符必须至少出现一次(1次或多次)。runoo*b,可以...

正则表达式。 ^node\\\/\\d+$ 是匹配哪些格式,请解释一下过程。
3.'^node\/([0-9]){1,}$' 这里的"\/"不用转义,故其意义为匹配: 已"node\/"开头, 然后是0-9中的任意数字重复1次或1次以上,并结束 所以 "node\/2" 是可以被匹配的 注: ^node\/\\d+$ 这个才是真正的正则表达式,是一个表达式. 当它作为一个字符串在其他语言里时, 因为一些字符在那...

越西县15212496152: c语言如何匹配字符串的问题 -
仁知思考: 可以使用strcmp函数匹配两个字符串,也可以用strstr函数在前一个字符串中查找后字符串包含的字符串

越西县15212496152: 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("_...

越西县15212496152: 向大神求教这一道题,字符串匹配问题 C语言 -
仁知思考: 给你点思路..1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19intv1=0,v2=0,v3=0,v4=0; for(inti = 0; i < strlen(str); i++) {switch(str[i]){case'<': v1++;break;case'>': v1--;break;case'(': if(v1) return"NO"; v2++;break;case')': v2--;break;case'[': ...

越西县15212496152: C语言 字符串匹配 -
仁知思考: 12345678910111213141516171819202122232425262728293031323334353637 #include <stdio.h> constcharkey[][12] = { "happy", "new", "year", "2014"}; // 是否完全匹配某一个特定的 key intmatch1(constchar*s, constchar*t) { while...

越西县15212496152: c语言字符串匹配的问题
仁知思考: 晕!这就是最简单的了,你把头文件string.h包含起来调用strstr()函数就完成了. string.h的库函数strstr()帮你完成此项功能,strstr()的功能就是在一个字符串中查找另一个字符串.下面是测试函数及strstr()函数. #include <stdio.h> #...

越西县15212496152: C语言中字符串连接怎么解决?? -
仁知思考: 可以使用字符串连接函数strcat()函数,头文件是#include<string.h>; 举例如下:两个字符串char [100]="abc",b[50]="def"; 将其变为一个字符串并输出#include<stdio.h>#include<string.h> int main() { char a[100]="abc",b[50]="def"; ...

越西县15212496152: C语言连接字符串问题 -
仁知思考: 正确答案:#include<stdio.h> main() { int i,j,k,l; char str1[10],str2[10],str3[20]; scanf("%s",str1); scanf("%s",str2); i=sizeof(str1); j=sizeof(str2); for(k=0;k<i;k++) { if(str1[k]=='\0') break; else str3[k]=str1[k]; } for(l=0;l<10;l++,k++) { if(str2[l]=='\0') // ●▽● ...

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

越西县15212496152: 《数据结构(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 ...

越西县15212496152: 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 ...

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