当前位置: 首页 > news >正文

C语言题目初学(4)--字符串

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.头文件别忘了

http://www.jsqmd.com/news/1119149/

相关文章:

  • ECP5702 PD Sink协议芯片在无电池照明产品中的应用
  • 11款米哈游架空文字字体:为你的设计项目注入游戏文化内涵
  • 千元电动牙刷核心技术解析:磁悬浮电机与智能算法
  • 大模型推理服务架构演进2026:Serverless、K8s与边缘部署的工程选型
  • C语言箭头操作符(->)完全教程:用法与实例
  • PyTorch 2.0 反向传播实战:从计算图到梯度下降的 5 步代码实现
  • PHP 5.x + MySQL SQL注入实战:3种经典绕过手法与防御代码对比
  • 2026年7月Agent开发面试题 -- 基础篇
  • 1940-2025年全国多级行政单元逐时气象数据
  • VScode SSH 免密连接 一键脚本
  • Holoscan SDK 概述
  • 深入解析pytest_terminal_summary钩子:从原理到实战的测试报告终极定制指南
  • 建筑外立面缺陷智能识别:YOLOv26驱动下的多类损伤检测数据集与实战10748期
  • Java毕设项目:基于 SpringBoot+Vue 的动漫资讯更新与浏览管理系统的设计与实现 动漫爱好者作品投稿与社区交流平台 (源码+文档,讲解、调试运行,定制等)
  • TVA在具身智能技术演进中的独特价值(9)
  • MySQL 全套 SQL 语句系统精讲|语法规范、性能避坑、企业级实战与学习复盘
  • AI Agent记忆系统深度解析:从短期上下文到长期知识库的架构设计
  • 2026年7月Agent开发面试题 -- 进阶篇
  • 个人AI聊天机器人真的必要吗?三重过滤网评估技术适配度
  • 海关合规风控进入大模型时代:稽核应对、自查自纠与内部审计如何智能化
  • 大模型逻辑能力横评:28道题深度压力测试
  • 容量规划——让资源“恰到好处“
  • 机械零件热处理的“四把火”:常用热处理方法全解析,什么是“调质”一次讲透!
  • 《和姐姐一起嫁入公府》小说|下载|txt
  • UIAbility 冷启动、热启动与重复拉起处理:把入口状态写稳
  • 2026年免费查重网站推荐:PaperRed、毕业之家AI等8款平台对比测评
  • 基础的无线实验
  • HTTP 最最最本质的拆解
  • 包裹计数目标检测数据集(约6000张单类别YOLO标注已划分)| 仓储物流包裹统计专用数据集
  • 加工贸易与保税账册进入大模型时代:料件、单耗、核销与账册风险如何智能管理