首页 > 其他分享 >字符串函数

字符串函数

时间:2022-11-24 11:00:28浏览次数:42  
标签:return 函数 dest char ++ str 字符串 const

strlen

用法:计算字符串里的字符个数(不加'\0')

 1字符串以’\0为结尾‘

2返回值为size_t(无符号)

实现strlen

#include<stdio.h>
int mystrlen(const char* str)
{
int count = 0;
while (*str++)
count++;
return count;
}
int main()
{
int len = mystrlen("abcdef");
printf("%d", len);
return 0;
}

strcpy

用途:将后方的字符串拷贝到前面的字符串

1字符串都是以‘\0’为结尾

2目标空间足够大

3目标空间可以改变

实现strcpy

#include<stdio.h>
char* mystrcpy(char* dest,const char* str)
{
char* ret = dest;
while (*dest++= *str++);
return ret;
}
int main()
{
char ch1[10] = "abcde";
char ch2[] = "qweaaa";
mystrcpy(ch1, ch2);
printf("%s", ch1);
return 0;
}

strncpy

用途:将后方的n个字符串拷贝到前面的字符串,若字符串不够补0.

1字符串都是以‘\0‘为结尾

2目标空间足够大

3目标空间可以改变

实现

#include<stdio.h>
char* mystrcpy(char* dest, const char* str,size_t count)
{
char* ret = dest;
while (count && (*dest++ = *str++))
count--;
if (count)
while (--count)
*dest = '\0';
return ret;
}
int main()
{
char ch1[10] = "abcde";
char ch2[] = "qweaaa";
mystrcpy(ch1, ch2,3);
printf("%s", ch1);
return 0;
}

strcat

用途:将后面的字符串连接到前面的字符串

1字符串都是以0为结尾

2目标空间足够大

3目标空间可以改变

实现strcat

#include<stdio.h>
char* mystrcat(char* dest,const char* str)
{
char* ret = dest;
while (*dest != 0)
dest++;
while (*dest++ = *str++);
return ret;
}
int main()
{
char ch1[20] = "hello ";
char ch2[] = "world";
mystrcat(ch1, ch2);
printf("%s", ch1);
return 0;
}

strncat

用途:将后面的n个字符串连接到前面的字符串

实现:

#include<stdio.h>
char* mystrcat(char* dest, const char* str,size_t count)
{
char* ret = dest;
while (*dest != 0)
dest++;
while (count-- && (*dest++ = *str++) && str);
return ret;
}
int main()
{
char ch1[20] = "hello ";
char ch2[] = "world";
mystrcat(ch1, ch2,3);
printf("%s", ch1);
return 0;
}

strcmp

用途:比较字符串大小

规则:若第一个字符串大于第二个字符串,返回值>0,若小于,返回值<0

若等于,返回值=0。

实现

#include<stdio.h>
size_t mystrcmp(const char* dest,const char* str)
{
while (*dest++ == *str++ && *str != 0 && *dest != 0);
if (*dest-- > *str--)
return 1;
else if (*dest == *str)
return 0;
else
return -1;
}
int main()
{
const char* p1 = "hello";
const char* p2 = "hello";
size_t ret = mystrcmp(p1, p2);
printf("%d", ret);
return 0;
}

strncmp

用途:比较钱n个字符串大小

实现

#include<stdio.h>
size_t mystrcmp(const char* dest, const char* str,size_t count)
{
while (count-- && (*dest++ == *str++) && *str && *dest);
if (*dest-- > *str--)
return 1;
else if (*dest == *str)
return 0;
else
return -1;
}
int main()
{
const char* p1 = "hello";
const char* p2 = "hello";
size_t ret = mystrcmp(p1, p2,8);
printf("%d", ret);
return 0;
}

strstr

用途:在前一个字符串查找后一个字符串

实现:

#include<stdio.h>
char* mystrstr(const char*p1,const char*p2)
{
char* s1; char* s2;
char* cur = (char*)p1;
if (*p2 == NULL)
return (char*)p1;
while (*cur)
{
s1 = cur;
s2 = (char*)p2;
while ((*s1 == *s2) && *s1 && *s2)
s1++,s2++;
if (*s2 == 0)
return cur;
cur++;
}
return NULL;
}
int main()
{
const char* p1 = "hello";
const char* p2 = "e";
char*x =mystrstr(p1, p2);
printf("%s",x);
return 0;
}

strtok

用途:以后面的字符为分割点,找到前面的字符之前的部分。

1会改变字符串。

2将字符改成NULL

#include<stdio.h>
#include<string.h>
int main()
{
char arr[30] = "123.456@789";
const char* p = "@.";
char* ret = NULL;
for(ret = strtok(arr, p);ret!=NULL;ret=strtok(NULL,p))
printf("%s", ret);
return 0;
}

strerror(errno)

用途:C语言库里发生错误,返回到errno中

各种函数

字符串函数_字符串拷贝

字符串函数_#include_02

tolower将大写转小写

toupper小写转大写

标签:return,函数,dest,char,++,str,字符串,const
From: https://blog.51cto.com/u_15770447/5882673

相关文章

  • 工作记录-截取字符串数字部分
    最近在做一个需求的时候,需要用js去截取一个字符串的数字部分,现在有个字符串格式为'数字+单位' 比如是'10px'、'10%',在单位不知道的情况下,截取数字。如果已知单位,用sp......
  • [Object-C语言随笔之三] 类的创建和实例化以及函数的添加和调用!
     李华明Himi ​原创,转载务必在明显处注明:​上一小节的随笔写了常用的打印以及很基础的数据类型的定义方式,今天就来一起学习下如何创建类与函数的一些随笔;首先类的创建:......
  • Python基础之字符串
    一、认识字符串字符串是Python中最常⽤的数据类型。我们⼀般使⽤引号来创建字符串。创建字符串很简单,只要为变量分配⼀个值即可。1、字符串特征⼀对引号字符串name1='To......
  • 函数作用域、内置函数
    一、函数作用域1:变量的声明:例如:a="test"print(a)2:函数里面的变量不声明可以吗? 可以:例如 def(a,b): #形参,暂位置的  形参不叫声明 returna+b3:局部变量:......
  • 代码随想录算法训练营Day08|344. 反转字符串、541. 反转字符串 II、剑指 Offer 05. 替
    代码随想录算法训练营Day08|344.反转字符串、541.反转字符串II、剑指Offer05.替换空格、151.反转字符串中的单词、剑指Offer58-II.左旋转字符串344.反转字符......
  • 微信小程序异步回调函数恶梦和解决办法
    问题先看看下面的代码,是读写取腾讯cos,因为几个对象间是有层次关系的,要读出一个取值然后作为另一个的条件,再去读,依次有几层关系。按照官方文档,每一次都要放在回调函数里取......
  • 函数
    定义函数的四种方法具名函数function函数名(形式参数1,形式函数2,...){语句return返回值}还有一种写法leta=functionfn(){}//这种写法在调用时只能这样写......
  • 基础-字符串操作
    “理论上,理论和实践没有区别。但实践上,是有区别的。”       ——简.范德斯乃普特1、三引号字符串:如果字符串跨行,可以使用三引号。2、索引:字符串是可以迭......
  • #yyds干货盘点#【愚公系列】2022年11月 微信小程序-地图的使用之API相关函数案例
    前言地图基础属性:属性类型默认值必填说明最低版本longitudenumber是中心经度1.0.0latitudenumber是中心纬度1.0.0scalenumber16否缩放......
  • JS函数总和
    函数定义: JavaScript使用关键字function定义函数。 函数可以通过声明定义,也可以是一个表达式。 函数声明语法: parameters:参数 functionname:函数名称 ......