目录
1.strcmp函数
1.1函数介绍
1.2函数使用
1.2.1代码
1.2.2运行结果
1.3模拟实现strcmp
1.3.1实现思路
1.3.2代码
1.3.3运行结果
2.strcat函数
2.1函数介绍
2.2函数使用
2.2.1代码
2.2.2运行结果
2.3模拟实现strcat
2.3.1实现思路
2.3.2代码
2.3.3运行结果
3.strcpy函数
3.1函数介绍
3.2函数使用
3.2.1代码
3.2.2运行结果
3.3函数模拟实现strcpy
3.3.1实现思路
3.3.2代码
3.3.3运行结果
1.strcmp函数
1.1函数介绍
strcmp函数是用来比较两个字符串大小的函数,需要引用头文件<string.h>。
int strcmp ( const char * str1, const char * str2 );
strcmp比较两个字符串的大小,一个字符一个字符比较,按ASCLL码比较
标准规定:
第一个字符串大于第二个字符串,则返回大于0的数字
第一个字符串等于第二个字符串,则返回0
第一个字符串小于第二个字符串,则返回小于0的数字
1.2函数使用
1.2.1代码
#include<stdio.h>
#include<string.h>
int main()
{
char* p1 = "abcdefgh";
char* p2 = "abcdefgh";
char* p3 = "abcde";
char* p4 = "bcdef";
printf("%d\n", strcmp(p1, p2));
printf("%d\n", strcmp(p1, p3));
printf("%d\n", strcmp(p3, p4));
}
1.2.2运行结果
1.3模拟实现strcmp
1.3.1实现思路
1.函数所接收的值只用于比较,不能被修改,因此要对参数进行const修饰,由于传入参数都不能为空,因此可以加用断言。
2. strcmp是比较字符串中对应位置上的字符大小(ASC II码值大小),如果相同,就比较下一对,直到不同或者都遇到'\0'。
3.若str1和str2解引用后不相等,则返回*str1-*str2。
1.3.2代码
#include<stdio.h>
#include<assert.h>
int my_strcmp(const char* str1, const char* str2)
{
assert(str1 && str2);
while (*str1 == *str2)
{
if (*str1 == '\0')
{
return 0;
}
str1++;
str2++;
}
return(*str1 - *str2);
}
int main()
{
char* p1 = "abcdefgh";
char* p2 = "abcdefgh";
char* p3 = "abcc";
char* p4 = "bcde";
printf("%d\n", my_strcmp(p1, p2));
printf("%d\n", my_strcmp(p1, p3));
printf("%d\n", my_strcmp(p3, p4));
}
1.3.3运行结果
2.strcat函数
2.1函数介绍
strcat追加拷贝,追加到目标空间后面,目标空间必须足够大,能容纳下源字符串的内容。
char * strcat ( char * destination, const char * source );
2.2函数使用
2.2.1代码
#include<stdio.h>
#include<string.h>
int main()
{
char str1[20] = "yes or";
const char* str2 = " on";
strcat(str1, str2);
printf("%s\n", str1);
return 0;
}
2.2.2运行结果
2.3模拟实现strcat
2.3.1实现思路
1.目的在字符串dst的末尾接上src的开头。
2.因此首先让dst指向'\0',让src从'\0'开始赋值给dst
2.3.2代码
#include<stdio.h>
void MyStrcat(char* dst, const char* src)
{
while (*dst != '\0')
{
++dst;
}
while (*dst = *src)
{
++dst;
++src;
}
*dst = '\0';
}
int main()
{
char p1[20] = "yes or";
const char* p2 = " no";
MyStrcat(p1, p2);
printf("%s\n", p1);
return 0;
}
2.3.3运行结果
3.strcpy函数
3.1函数介绍
strcpy是覆盖拷贝,将source全覆盖拷贝到destination,会把’\0’也拷过去,且必须考虑destination的空间够不够(destination的空间必须>=source的空间)
char * strcpy ( char * destination, const char * source );
3.2函数使用
3.2.1代码
#include<stdio.h>
#include<string.h>
int main()
{
char p1[] = "yes or no";
char* p2 = "yes";
printf("%s\n", p1);
strcpy(p1, p2);
printf("%s\n", p1);
return 0;
}
3.2.2运行结果
3.3函数模拟实现strcpy
3.3.1实现思路
我们目的是将source覆盖拷贝到destination,那么我们可以从头开始将source的值,赋给destination,赋值结束后只需要给destination后一个位置加上'\0'就完成了。文章来源:https://www.toymoban.com/news/detail-790980.html
3.3.2代码
#include<stdio.h>
void my_strcpy(char* dst, const char* src)
{
while (*src)
{
*dst = *src;
++src;
++dst;
}
*dst = '\0';
}
int main()
{
char p1[] = "yes or no";
const char* p2 = "yes";
printf("%s\n", p1);
my_strcpy(p1, p2);
printf("%s\n", p1);
return 0;
}
3.3.3运行结果
文章来源地址https://www.toymoban.com/news/detail-790980.html
到了这里,关于C语言--strcmp函数,strcat函数,strcpy函数详解及实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!