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个函数学习分享相关推荐

  1. Python学习3 字符串和相关常用函数

    字符串声明 双引号,单引号,三单引号,三双引号 里面有双引号,外面使用单引号 里面有单引号,外面使用双引号 或者使用转义字符 #字符串 m='hello' n="hello" #里 ...

  2. C语言九十四之请编写函数fun(char *str, int n),其功能是:使字符串str的前导*号不能多余n个,若多于n个,则删除多余的*号,若少于或等于n个,则不做处理。

    1.题目 规定输入的字符串中只包含字母和*号,请编写函数fun(char *str, int n),其功能是:使字符串str的前导*号不能多余n个,若多于n个,则删除多余的*号,若少于或等于n个,则不 ...

  3. 字符串相关的45个函数

    字符串相关的45个函数 capitalize: 将字符串第一位大写,其他小写 str1 = 'abcDef' print(str1.capitalize()) # Abcdef casefold:将字 ...

  4. Python语言学习:基于python五种方法实现使用某函数名【func_01】的字符串格式('func_01')来调用该函数【func_01】执行功能

    Python语言学习:基于python五种方法实现使用某函数名[func_01]的字符串格式('func_01')来调用该函数[func_01]执行功能 目录 问题提出 代码五种设计思路 T1方法:e ...

  5. python测试字符串类型的函数_python-02 数据类型 字符串str

    字符串str 一.字符串定义 概念:字符串是有序的 不可修改的,元素以引号包围的序列 引号类型:''单引号 ""双引号 " ""三引号 '''三单引号 ...

  6. C/C++语言函数学习(4)字符串处理函数

    #include <string.h> 函数名称:     strchr 函数原型:     char* strchr(char* str,char ch); 函数功能:     找出st ...

  7. linux C语言perror()函数(将错误消息写入标准错误)(把一个描述性错误消息输出到标准错误 stderr。首先输出自定义字符串 str,后跟一个冒号,然后是一个空格)

    文章目录 man 3 perror man 3posix perror 20220723 C语言 | perror函数使用详解 man 3 perror PERROR(3) Linux Program ...

  8. python字符串的定界符不能是_Python|字符串str的构造、操作(操作符、函数、方法)...

    s = 'a' #使用单引号定义一个单字符 s0 = "hi,python" #直接通过定义描述构造字符串(双引号) print(s,'\n',s0) list1 = [1,1,2 ...

  9. php常用操作字符串函数,php字符串几个常用的操作函数

    字符串的相关操作 转换字符串类型strval($str); //转换成字符串类型 floatval($str);//转换成浮点型 intval($str); //转换成整型 2.大小写转换(推荐学习: ...

最新文章

  1. pdf格式转换成jpg的简单教程
  2. 阿里一面 京东一面+二面 | 掘金技术征文
  3. python物联网通信_物联网通信RESTDemo示例程序(Python版本)
  4. 深入 Adobe Reader 保护模式 —— 第一部分 —— 设计
  5. Android之ndk编译出现这个错误error: unused variable ‘a‘ [-Werror=unused-variable]
  6. Netcdf中多变量导出代码示例
  7. 电影评论分类:二分类问题
  8. 牺牲阳极计算机安装标准储罐,钢质储罐阴极保护牺牲阳极保护方法与设计安装...
  9. Linux学习笔记 第三课 目录结构及简单命令
  10. WPF 微信 MVVM 【续】发送部分QQ表情
  11. POJ 2923 Relocation ★(状态压缩+01背包)
  12. JavaScript — json文件的读取与写入
  13. 2022牛客寒假训练营1-K冒险公社
  14. 五年级3月30日——4月3日课程表
  15. 徒手撸平台——基于Springboot+layui实现接口自动化平台
  16. hibernate主键生成策略native,assigned,uuid的区别
  17. epiphone真伪
  18. JAVASE之多线程初识
  19. VS2005/SQL2005等原版镜像高速下载
  20. jmeter-取token

热门文章

  1. Lunix历史及如何学习
  2. 微信小程序之拓展篇——weui-wxss
  3. Failed to install XXXX.apk on device '5358baa3': timeout
  4. vue的passive
  5. swiper联动侧边栏(带图片)
  6. 2020宝塔面板和旗鱼云梯linux面板对比
  7. 解决asked to gather along dimension 0, but all input tensors were scalars; will instead unsqueeze an
  8. HashMap之resize方法
  9. Linux服务器等保加固脚本/检测脚本
  10. Dynamics CRM 365 电子邮箱配置