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

【常用字符串相关函数】

主题:常用字符串相关函数(对应的头文件是 “string.h”)
//strcpy  字符串拷贝函数
//strcat  字符串连接函数
//strcmp  字符串比较函数
//strstr  字符串中找字符串

//有长度限制的字符串函数
//strncpy  限制长度的字符串拷贝函数(拷贝指定个数的字符)
//strncat  限制长度的字符串连接函数(连接指定个数的字符)
//strncmp  限制长度的字符串比较函数(比较指定个数的字符串)


字符串相关函数的简单使用:

 //strcpy  拷贝函数
#include<stdio.h>
#include<string.h> 

int main()
{
//定义str1数组 
char str1[] = "abcdef";

//定义str2数组
char str2[100] = "fedcba"; 

//打印str1数组和待会拷贝后的str2数组做对比 
printf("数组str1:\n"); 
printf("%s\n",str1);

//打印str2数组和待会拷贝后的str2数组做对比 
printf("未进行新内容拷贝之前的数组str2:\n");
printf("%s\n",str2);

//进行拷贝strcpy(需要拷贝的目标地址,被拷贝的字符串的地址) 
//将str1 里面的内容拷贝到 str2 里面去 
//进行拷贝时拷贝的新内容会替换之前的内容 
strcpy(str2,str1); 

//打印str2检验是否拷贝成功 
printf("进行新内容拷贝之后的数组str2:\n");
printf("%s\n",str2);
return 0;


//strcpy的模拟实现
#include<stdio.h>
#include<string.h> 

//函数定义和声明 
char* my_strcpy(char *p1,char *p2)
{
//记录需要拷贝的空间的起始地址 
char* ret = p1;
//遍历被拷贝的数组,如果不是'\0' 就进入循环进行拷贝 
while(*p2!='\0')
{
*p1 = *p2;
p1++;
p2++;
}
//循环结束,进行 \0 的拷贝 
*p1 = *p2;

//返回已经拷贝好的数组空间的起始地址 
return ret;
}

int main()
{
//定义str1数组 
char str1[] = "abcdef";

//定义str2数组
char str2[100] = "fedcba"; 

//打印str1数组和待会拷贝后的str2数组做对比 
printf("数组str1:\n"); 
printf("%s\n",str1);

//打印str2数组和待会拷贝后的str2数组做对比 
printf("未进行新内容拷贝之前的数组str2:\n");
printf("%s\n",str2);

//进行拷贝strcpy(需要拷贝的目标地址,被拷贝的字符串的地址) 
//将str1 里面的内容拷贝到 str2 里面去 
//进行拷贝时拷贝的新内容会替换之前的内容 
my_strcpy(str2,str1); 

//打印str2检验是否拷贝成功 
printf("进行新内容拷贝之后的数组str2:\n");
printf("%s\n",str2);
return 0;



//strcat  字符串连接函数
#include<stdio.h>
#include<string.h> 

int main()
{
//定义str1数组 
char str1[] = "abcdef";

//定义str2数组
char str2[100] = "ghljkl"; 

//打印str1数组和待会连接后的数组做对比 
printf("数组str1:\n"); 
printf("%s\n",str1);

//打印str2数组和待会连接后的数组做对比 
printf("数组str2:\n");
printf("%s\n",str2);

//进行连接 strcat(需要连接的目标地址,被连接的字符串的地址) 
//在str1后面连接上str2
//从str1后面的 \0 处开始进行连接 
strcat(str1,str2); 

//打印str1检验是否连接成功 
printf("进行新内容连接之后的数组str1:\n");
printf("%s\n",str1);
return 0;



 //字符串连接函数的模拟实现
#include<stdio.h>
#include<string.h> 


//函数的定义与声明 
char* my_strcat(char* p1,char* p2)
{
//记录 p1 的起始位置 
char* ret = p1;

//找到str1的末尾也就是'\0'的位置 
while(*p1!='\0')
{
p1++;
}
//跳出第一个while循环时 p1 指向了str1中 \0 的位置,而p2指向的仍然是str2的其实位置 
//遍历str2进行赋值连接操作 
while(*p2!='\0')
{
*p1 = *p2;
p1++;
p2++;
}
//将wtr2中的 \0 赋值到str1 的末尾 
*p1 = *p2;

//返回str1的起始位置 
return ret;

}

 int main()
{
//定义str1数组 
char str1[100] = "abcdef";

//定义str2数组
char str2[100] = "ghljkl"; 

//打印str1数组和待会连接后的数组做对比 
printf("数组str1:\n"); 
printf("%s\n",str1);

//打印str2数组和待会连接后的数组做对比 
printf("数组str2:\n");
printf("%s\n",str2);

//进行连接 strcat(需要连接的目标地址,被连接的字符串的地址) 
//在str1后面连接上str2
//从str1后面的 \0 处开始进行连接 
my_strcat(str1,str2); 

//打印str1检验是否连接成功 
printf("进行新内容连接之后的数组str1:\n");
printf("%s\n",str1);
return 0;
}


//strcmp  字符串比较函数
#include<stdio.h>
#include<string.h> 

int main()
{
//定义str1数组 
char str1[] = "abcdef";

//定义str2数组
char str2[100] = "abcdqy"; 

//打印str1数组方便待会做对比 
printf("数组str1:\n"); 
printf("%s\n",str1);

//打印str2数组方便待会做对比 
printf("数组str2:\n");
printf("%s\n",str2);

//进行连接 strcmp(比较对象1的起始地址,比较对象2的起始地址) 
//前面的和后面的比
//大于  则返回一个大于0的数字
//等于  则返回 0
//小于  则返回一个小于0的数字 
//str1和str2比较 
int r=strcmp(str1,str2); 

if(r>0)
{
printf("str1>str2\n");
}
else if(r==0)
{
printf("str1 = str2\n");
}
else
{
printf("str1<str2\n");
}

     return 0;



//字符串比较函数的模拟实现
#include<stdio.h>
#include<string.h> 

//函数的定义与声明 
int my_strcmp(char* p1,char* p2) 
{
//对两个字符数组同时遍历
//两个数组都同时不是 \0 时进入循环 
while((*p1!='\0')&&(*p2!='\0') )
{
//p1大于p2时 
if(*p1>*p2)
{
return 1;
}
//p1小于p2时 
else if(*p1<*p2)
{
return -1;
}
//p1 = p2 时 p1 和 p2 同时++ 向后遍历继续比较 
else
{
p1++;
p2++;
}
}
//跳出循环时说明p1和p2其中有一个指向了 \0
//当p1等于\0,p2不等于\0时说明str2大于str1 
if((*p1=='\0')&&(*p2!='\0'))
{
return -1;

//当p1不等于\0,p2等于\0时说明str2小于str1 
else if((*p1!='\0')&&(*p2=='\0'))
{
return 1;
}
//否则就是两个同时为 \0 说明str1 = str2 
else
{
return 0;
}
return 0;
}
int main()
{
//定义str1数组 
char str1[100] = "abcdef";

//定义str2数组
char str2[100] = "abcdef"; 

//打印str1数组方便待会做对比 
printf("数组str1:\n"); 
printf("%s\n",str1);

//打印str2数组方便待会做对比 
printf("数组str2:\n");
printf("%s\n",str2);

//进行连接 strcmp(比较对象1的起始地址,比较对象2的起始地址) 
//前面的和后面的比
//大于  则返回一个大于0的数字
//等于  则返回 0
//小于  则返回一个小于0的数字 
//str1和str2比较 
int r=my_strcmp(str1,str2); 
printf("比较结果:\n");
if(r>0)
{
printf("str1>str2\n");
}
else if(r==0)
{
printf("str1 = str2\n");
}
else
{
printf("str1<str2\n");
}

     return 0;
}  

http://www.dtcms.com/a/442285.html

相关文章:

  • unsigned 是等于 unsigned int
  • 营销型企业网站建设案例网站建设功能分为几种
  • 2058. 找出临界点之间的最小和最大距离
  • Leetcode 347. 前 K 个高频元素 堆 / 优先队列
  • python 做网站 案例那个网站专利分析做的好
  • 获得场景视频API开发(01):CC视频平台分片上传服务的设计与实践
  • Spring Boot整合缓存——Ehcache缓存!超详细!
  • 数据结构 之 【LRU Cache】(注意list的splice接口函数)
  • 专门做封面的网站免费做网站怎么做网站吗
  • 25秋新三上语文1-8单元作文习作指导含填空练习+三年级上册语文各单元习作范文/写作技巧/填空练习+完整电子版可下载打印
  • 拥抱终端:Linux 新手命令行入门指南
  • wordpress 512做网站优化的协议书
  • 设计稿秒出“热力图”:AI预测式可用性测试工作流,上线前洞察用户行为
  • 种完麦子,就往南走
  • 像素时代网站建设手机站设计菏泽网站建设推广
  • python爬虫scrapy框架使用
  • mysql基础操作——库的操作和表的操作
  • 使用springboot2.6、vue2.6以及mysql从0开始搭建个人博客网页
  • MySQL 核心架构解析:从 SQL 层到存储引擎的深度探索
  • 网站建设推广济南兴田德润优惠吗网站推广四个阶段
  • logbuffer 概念及题目
  • 通用定时器的基本介绍与功能概述
  • 洛谷 P14115:[IAMOI R4] 木桶效应 ← 二分
  • Python pip -U参数作用及使用建议
  • python全栈(基础篇)——day03:基础内容(字符串格式化+简单数据类型转换+进制的转换+运算符+实战演示+每日一题)
  • 学网站建设能赚钱吗网上购物哪家质量好
  • 基于ASRPRO的语音对话
  • 女人与狗做网站天津重型网站建设风格
  • 拼图小游戏开发日记 | Day3(已完结)
  • Go 1.25 新特性:正式支持 Git 仓库子目录作为 Go 模块