IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言学习记录(三)——字符串函数以及实现(1) -> 正文阅读

[C++知识库]C语言学习记录(三)——字符串函数以及实现(1)

免责声明:此文章只做本人记录学习。

目录

函数一:strlen计算字符串长度函数

函数二:strcpy

函数三:strcat

函数四:strcmp

注:1.所有函数包含在头文件<string.h>

2.所有测试字符串均为常量字符串(不可改动)

3.传递字符串地址其实是首字符的地址,若打印符号是%s便打印从此开始的字符串

函数一:strlen计算字符串长度函数

原:

int main()
{
	char *p1 = "areyouready";
	int strnum = strlen(p1);
    printf("%d ",strnum);
	return 0;
}//计算结果:11

关于strlen函数:

1.strlen 找字符串的原理是寻找‘\0’为字符串结尾终止计数

2.strlen的返回值是 size_t 也就是正整数,不会出现负值情况

my_strlen实现:

size_t my_strlen(const char*p1)//注意是const
{
	assert(p1!= NULL);断言空指针检查
	int num = 0;
	while (*p1)
	{
		p1++;
		num++;
	}
	return num;
}

int main()
{
	char *p1 = "areyouready";
	int strnum = my_strlen(p1);
	printf("%d ",strnum);
	return 0;
}

函数二:strcpy

#include<stdio.h>
#include<string.h>
int main()
{
    char arr1[]= "are_you_ready";
    char arr2[] = "0";
    strcpy(arr2,arr1);
    printf("%S\n",arr1);
    return 0;
}

关于strcpy函数

1.函数声明:

 char *strcpy(char *destin, const char *source);

注意:第二个参数是const char*且返回参数是char*,返回指针指向destin的指针

2.my_strcpy的实现

#include<stdio.h>
#include<assert.h>
#include<string.h>
char *my_strcpy(char* destin ,const char *src)
{
    assert(*destin != NULL);
    assert(*src != NULL);
    char* ret = destin;//传进来的地址需要先记住,destin所表示的地址后面会变化
    while(*destin++ = *src++)
    {
        ;
    }
    return ret;//传回开始的地址
}


int main()
{
    char arr1[] = "are_you_ready";
    char arr2[] = "maybe";
    my_strcpy(arr1,arr2);
    return 0;
}

函数三:strcat

#include<studio.h>
#include<string.h>
int main()
{
 
   char destin[25]={"I love"};
 
   char *str = " C";
 
   strcat(destin, str);

   printf("%s\n", destin);
 
   return 0;
 
}

关于strcat函数

1.函数声明

char *strcat(char *destin, const char *source);

注意:第二个参数是const char*且返回参数是char*,指向destin的指针

2.strcat的实现是把source的首字符替代目标字符串的‘\0’,同时把source的‘\0‘也拷贝过去。

3.my_strcat的实现

#include<stdio.h>

my_strcat(char* destin, const char* source)
{

	assert(destin != NULL);
	assert(source != NULL);
	char* ret = destin;
	while (*destin)
	{
		destin++;
	}
	while (*destin++ = *source++)
	{
		;
	}


	return ret;


}


int main()
{
	char arr[40] = "Who talks of victory?";
	char* str = "To endure is all";
	my_strcat(arr,str);
	printf("%s\n", arr);
	return 0;
}

函数四:strcmp

#include<stdio.h>
#include<string.h>

int main()
{

    char* arr = "yes";
    char* arr1 = "no";
    int n = strcmp(arr,arr1);
    if(n == 0);
    {
        printf("字符串一样");
    }
    elseif(n>0)
    {
        printf("第一个字符串大于第二个");
    }
    else
    {
        printf("第二个字符串大于第一个");    
    }
    
    return 0;
}

关于strcmp函数

1.函数声明

int strcmp(const char *str1,const char *str2);

2.

?str1 > str2 , 返回 1;

?str1 < str2 , 返回 -1;

?str1 == str2 , 返回 0;

注:strcmp并不是比较字符串长度而是比较每一个字母在字母表的位置。

my_strcmp的实现

int my_strcmp(const char* str1, const char* str2)
{
	assert(str1 && str2);//为了保证str1和str2不是空
	while (*str1 == *str2)
	{
		if (*str1 == '\0')
		{
			return 0;
		}
		str1++;
		str2++;
	}
	//return (*str1-str2);
	if (*str1 > *str2)
		return 1;//不一定是1,只要是大于0的数都可以
	else
		return -1;//不一定是-1,只要是小于0的数都可以

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 00:51:43  更:2022-09-04 00:56:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:15:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码