当前位置:首页 > 编程笔记 > 正文
已解决

【C语言】字符函数和字符串函数(含模拟)

来自网友在路上 156856提问 提问时间:2023-09-22 22:55:55阅读次数: 56

最佳答案 问答题库568位专家为你答疑解惑

前言:
在做OJ题或阅读代码时或多或少会遇到一些字符函数和字符串函数,
如果不认识或不熟悉就会造成不便,
本篇文章主要是为了这方面而存在,
此篇介绍各个字符串的功能与使用方法,
下一篇会讲解如何模拟这些函数

重点:

重点介绍处理字符和字符串的库函数的使用和注意事项

一一一一一一一一分割线一一一一一一一一一

目录

  • 1.函数介绍:
    • 1.1 strlen
    • 1.2 strcpy
    • 1.3 strcat
    • 1.4 strcmp
  • 2.库函数的模拟实现:

1.函数介绍:

1.1 strlen

在这里插入图片描述

我们可得这个函数是求在字符串开始与'\0'之间的字符串长度

代码示例:

#include <stdio.h>
int main()
{const char* str1 = "abcdef";const char* str2 = "bbb";printf("%d\n", strlen(str1));printf("%d\n", strlen(str2));if (strlen(str2) - strlen(str1) > 0){printf("str2>str1\n");}else{printf("srt1>str2\n");}return 0;
}

结果:
在这里插入图片描述
解释:

这里的6和3容易理解,那么str2>str1怎么解释?
因为strlen返回值类型为size_t类型,为无符号整形
即相减的结果虽然为一个负数,但负数的无符号整形显然是巨大的正数
故大于

此函数的注意事项:
1.字符串以 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前面出现的字符个数(不包含 ‘\0’ )。
2.参数指向的字符串必须要以 ‘\0’ 结束。
3.注意函数的返回值为size_t,是无符号的( 易错 )

一一一一一一一一分割线一一一一一一一一一

1.2 strcpy

在这里插入图片描述

我们可以知道此函数是为了拷贝字符串的

代码示例:

#include<string.h>int main()
{char str1[20] = { 0 };char str2[] = "hello world";strcpy(str1, str2);printf("%s\n", str1);return 0;
}

结果:
在这里插入图片描述

此函数的注意事项:
1.源字符串必须以 ‘\0’ 结束。
2.会将源字符串中的 ‘\0’ 拷贝到目标空间。
3.目标空间必须足够大,以确保能存放源字符串。
4.目标空间必须可变。

一一一一一一一一分割线一一一一一一一一一

1.3 strcat

在这里插入图片描述

上边两个函数很容易就可以根据形式看出大概意思,
str代表字符串,那么cat代表什么?
他代表Catenate,连接的缩写,也就是追加字符串的意思

代码示例:

int main()
{char str1[20] = "abc";char str2[] = "dfg";strcat(str1, str2);printf("%s\n", str1);return 0;
}

结果:
在这里插入图片描述

此函数的注意事项:
1.源字符串必须以 ‘\0’ 结束。
2.目标空间必须有足够的大,能容纳下源字符串的内容。
3.目标空间必须可修改。
4.不可以自己追加自己。
解释:关键在于 '\0',因为
在这里插入图片描述

一一一一一一一一分割线一一一一一一一一一

1.4 strcmp

在这里插入图片描述

我们可以得出此函数是为为比较字符串函数

代码示例:

int main()
{char str1[] = "abb";char str2[] = "abc";int ret =strcmp(str1, str2);printf("%d\n", ret);return 0;
}
此函数的注意事项:
1.第一个字符串大于第二个字符串,则返回大于0的数字
2.第一个字符串等于第二个字符串,则返回0
3.第一个字符串小于第二个字符串,则返回小于0的数字
4.比较字符串是从头开始逐一比较每个字符的ASCII码值,相等就继续向下比较,直到输出

努力更新中。。。

2.库函数的模拟实现:

努力更新中。。。

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"【C语言】字符函数和字符串函数(含模拟)":http://eshow365.cn/6-11717-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!