字符串(str)相关的4个函数学习分享
1.字符串求长度
int strlen(char *str); //s为指定的字符串
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "abcdef";
printf("%d\n",strlen(str));//6
return 0;
}
模拟实现strlen函数(其中size_t是无符号整型typedef unsigned int size_t)
#include<stdio.h>
#include<string.h>
size_t myStrlen(const char* str)
{
size_t len = 0;
while (*str1 != 0)
{
++len;
++str;
}
return len;
}
int main()
{
char* str = "abcdef";
printf("%d\n", myStrlen(str));
return 0;
}
2.字符串比较函数
int strcmp(const char* str1,const char* str2);
实际上是对字符串的ASCII码进行比较,其中str1和str2是字符串常量或者字符串变量;返回值为整形,所以区分大小写。
str1<str2,返回负值或者-1;
str1=str2,返回0;
str1>str2,返回正值或者1;
#include <stdio.h>
#include <string.h>
int main()
{
char* str1 = "abcdef";
char* str2 = "abcde";
char* str3 = "abcdef";
char* str4 = "abcdefg";
printf("%d\n",strcmp(str1,str2));
printf("%d\n",strcmp(str1,str3));
printf("%d\n",strcmp(str1,str4));
return 0;
}
模拟实现strcmp函数
#include<stdio.h>
#include<string.h>
int myStrcmp(const char *str1,const char* str2)
{
while (*str1 && *str2)
{
if(*str1 > *str2)
{
return 1;
}
else if(*str1 < *str2)
{
return -1;
}
else
{
++str1;
++str2;
}
}
if(*str1)
{
return 1;
}
else if(*str2)
{
return -1;
}
else
{
return 0;
}
}
int main()
{
char* str1 = "abcdef";
char* str2 = "abcde";
char* str3 = "abcdef";
char* str4 = "abcdefg";
printf("%d\n",myStrcmp(str1,str2));
printf("%d\n",myStrcmp(str1,str3));
printf("%d\n",myStrcmp(str1,str4));
return 0;
}
3.字符串复制函数
char *strcpy(char *str1,char const *str2);
将str2所指的字符串复制到str1所指的字符串中。注意:str1和str2所指的内存区域不可以重叠且str1必须有足够的空间来容纳str2的字符串。
#include <stdio.h>
#include <string.h>
int main()
{
char str1[] = "abcdef";//存储数据的空间必须指定否则会出现段错误
char *str2 = "hello";
strcpy(str1, str2);
printf("%s\n",str1);
printf("%s\n",str2);
return 0;
}
模拟实现strcpy函数(其中void是无类型,函数无返回值)
#include<stdio.h>
#include<string.h>
void myStrcpy(char *str1,const char* str2)
{
while (*str2)
{
*str1 = *str2
++str2;
++str1;
}
*str1 = '\0';
}
int main()
{
char str1[] = "abcdef";
const char* str2 = "hello";
myStrcpy(str1,str2)
printf("%s\n", str1);
printf("%s\n", str2);
return 0;
}
4.字符串连接函数
int strcat(char *str1, char *str2);
将字符串str2连接到str1的后面,并且str1最后结束符NULL会被覆盖掉,并且连接后的字符串的尾部会再增加一个NULL。注意:str1和str2所指的内存空间不能重叠,且str1要有足够的空间来容纳要复制的字符串。返回str1字符串的首地址。
#include <stdio.h>
#include <string.h>
int main()
{
char str1[12] = "abcdef";//存储数据的空间必须>=字符串长度总和否则会出现段错误
char *str2 = "hello";
strcat(str1, str2);
printf("%s\n",str1);
printf("%s\n",str2);
return 0;
}
模拟实现strcat函数
#include<stdio.h>
#include<string.h>
void myStrcat(char *str1,const char* str2)
{
while(*str1 != '\0')
{
++str1;
}
while((*str1 = *str2))//当遇到'\0'时循环结束
{
++str2;
++str1;
}
*str1 = '\0';
}
int main()
{
char str1[11] = "abcdef";
const char* str2 = "hello";
myStrcat(str1,str2)
printf("%s\n", str1);
printf("%s\n", str2);
return 0;
}
相关内容有错误的可指出,望与君共勉!
字符串(str)相关的4个函数学习分享相关推荐
- Python学习3 字符串和相关常用函数
字符串声明 双引号,单引号,三单引号,三双引号 里面有双引号,外面使用单引号 里面有单引号,外面使用双引号 或者使用转义字符 #字符串 m='hello' n="hello" #里 ...
- C语言九十四之请编写函数fun(char *str, int n),其功能是:使字符串str的前导*号不能多余n个,若多于n个,则删除多余的*号,若少于或等于n个,则不做处理。
1.题目 规定输入的字符串中只包含字母和*号,请编写函数fun(char *str, int n),其功能是:使字符串str的前导*号不能多余n个,若多于n个,则删除多余的*号,若少于或等于n个,则不 ...
- 字符串相关的45个函数
字符串相关的45个函数 capitalize: 将字符串第一位大写,其他小写 str1 = 'abcDef' print(str1.capitalize()) # Abcdef casefold:将字 ...
- Python语言学习:基于python五种方法实现使用某函数名【func_01】的字符串格式('func_01')来调用该函数【func_01】执行功能
Python语言学习:基于python五种方法实现使用某函数名[func_01]的字符串格式('func_01')来调用该函数[func_01]执行功能 目录 问题提出 代码五种设计思路 T1方法:e ...
- python测试字符串类型的函数_python-02 数据类型 字符串str
字符串str 一.字符串定义 概念:字符串是有序的 不可修改的,元素以引号包围的序列 引号类型:''单引号 ""双引号 " ""三引号 '''三单引号 ...
- C/C++语言函数学习(4)字符串处理函数
#include <string.h> 函数名称: strchr 函数原型: char* strchr(char* str,char ch); 函数功能: 找出st ...
- linux C语言perror()函数(将错误消息写入标准错误)(把一个描述性错误消息输出到标准错误 stderr。首先输出自定义字符串 str,后跟一个冒号,然后是一个空格)
文章目录 man 3 perror man 3posix perror 20220723 C语言 | perror函数使用详解 man 3 perror PERROR(3) Linux Program ...
- python字符串的定界符不能是_Python|字符串str的构造、操作(操作符、函数、方法)...
s = 'a' #使用单引号定义一个单字符 s0 = "hi,python" #直接通过定义描述构造字符串(双引号) print(s,'\n',s0) list1 = [1,1,2 ...
- php常用操作字符串函数,php字符串几个常用的操作函数
字符串的相关操作 转换字符串类型strval($str); //转换成字符串类型 floatval($str);//转换成浮点型 intval($str); //转换成整型 2.大小写转换(推荐学习: ...
最新文章
- pdf格式转换成jpg的简单教程
- 阿里一面 京东一面+二面 | 掘金技术征文
- python物联网通信_物联网通信RESTDemo示例程序(Python版本)
- 深入 Adobe Reader 保护模式 —— 第一部分 —— 设计
- Android之ndk编译出现这个错误error: unused variable ‘a‘ [-Werror=unused-variable]
- Netcdf中多变量导出代码示例
- 电影评论分类:二分类问题
- 牺牲阳极计算机安装标准储罐,钢质储罐阴极保护牺牲阳极保护方法与设计安装...
- Linux学习笔记 第三课 目录结构及简单命令
- WPF 微信 MVVM 【续】发送部分QQ表情
- POJ 2923 Relocation ★(状态压缩+01背包)
- JavaScript — json文件的读取与写入
- 2022牛客寒假训练营1-K冒险公社
- 五年级3月30日——4月3日课程表
- 徒手撸平台——基于Springboot+layui实现接口自动化平台
- hibernate主键生成策略native,assigned,uuid的区别
- epiphone真伪
- JAVASE之多线程初识
- VS2005/SQL2005等原版镜像高速下载
- jmeter-取token
热门文章
- Lunix历史及如何学习
- 微信小程序之拓展篇——weui-wxss
- Failed to install XXXX.apk on device '5358baa3': timeout
- vue的passive
- swiper联动侧边栏(带图片)
- 2020宝塔面板和旗鱼云梯linux面板对比
- 解决asked to gather along dimension 0, but all input tensors were scalars; will instead unsqueeze an
- HashMap之resize方法
- Linux服务器等保加固脚本/检测脚本
- Dynamics CRM 365 电子邮箱配置