C语言题目初学(4)--字符串
2026/7/4 3:07:58 网站建设 项目流程

11.找字符串的子串

遍历字符串数组,限定字符串的首个字符,然后比较后面的是不是也和要找的子串一样

#include<stdio.h>#include<string.h>intmain(){chars[100];charkey[10];scanf("%s %s",s,key);intcount=0;intslen=strlen(s);for(inti=0;i<slen;i++){if(s[i]==key[0]){inttempi=i;/* 需要 tempi 来遍历比对,同时保留 i 作为起始位置 以便匹配失败时,外层循环能从 i+1 继续尝试*///用次数判断intj=0;intlen=0;while(s[tempi]==key[j]&&s[tempi]!='\0'&&key[j]!='\0'){len++;tempi++;j++;}if(len==strlen(key)){count++;i=tempi-1;//例如s=aaaa,key=aa,写了是count=2,不写就是3}}}printf("%d",count);return0;}
#include<stdio.h>#include<string.h>intmain(){chars[100];charkey[10];scanf("%s %s",s,key);intcount=0;intslen=strlen(s);for(inti=0;i<slen;i++){if(s[i]==key[0]){inttempi=i;// 需要 tempi 来遍历比对,同时保留 i 作为起始位置// 以便匹配失败时,外层循环能从 i+1 继续尝试intflag=1;//一定要注意flag的位置//将key一一对照,加一个标记,不相同即为0intkeylen=strlen(key);for(intj=0;j<keylen;j++){if(slen-tempi<keylen){break;}if(s[tempi]!=key[j]){flag=0;break;}tempi++;}if(flag){count++;i=tempi-1;}}}printf("%d",count);return0;}

其实本来就有函数,一个标准写法

#include<stdio.h>#include<string.h>intmain(){chars[100],key[10];scanf("%s %s",s,key);intcount=0;char*p=s;while((p=strstr(p,key))!=NULL){//从p开始找这个字符串count++;p+=strlen(key);// 跳过已匹配部分(不重叠)// p++; // 如果统计重叠子串,用这个}printf("%d\n",count);return0;}

2.字符串比较

字符串比较,不能用< >这样的关系运算符,数组会比较地址
我们可以用strcmp(str1,str2)
str1>str2得到>0,<就得到<0
不一定是1或者-1

#include<string.h>charstr1[]="Hello";charstr2[]="Hello";charstr3[]="World";strcmp(str1,str2);// 返回 0(相等)strcmp(str1,str3);// 返回负数('H' < 'W')strcmp(str3,str1);// 返回正数('W' > 'H')

注意,数组名代表的是地址

if(str1==str2){// 这样不对!!比较的是地址,不是内容,永远为假printf("相等");}// 应该用 strcmpif(strcmp(str1,str2)==0){printf("相等");}

还有就是
(1)区分大小写
(2)别忘记头文件

3.字符串连接

strcat(字符串1,字符串2)

#include<string.h>charstr1[100]="Hello";charstr2[]=" World";strcat(str1,str2);// str1变成 "Hello World"

注意
1.缓冲区溢出

charstr[10]="Hello";strcat(str," World!");// ❌ 缓冲区不够,溢出!

2.初始化,字符串以’\0’结尾

charstr[100];strcat(str,"Hello");// ❌ str没有\0结尾,危险!

可以初始化为""或者放’\0’

charstr[100]="";// 初始化为空字符串strcat(str,"Hello");

3.头文件别忘了

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询