当前位置: 首页 > article >正文

【C语言】字符函数和字符串函数(中)

本篇博客将讲解以下知识:

(1)strcpy的使用和模拟实现

(2)strcat的使用和模拟实现

1、strcpy的使用和模拟实现

(1)strcpy的使用

注意:使用strcpy时需包含头文件:string.h

strcpy的作用是字符串拷贝

strcpy原型:

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

source是源头,destination是目的地,strcpy是把源头的数据拷贝到目的的空间中去。

代码示例:

strcpy使用注意事项:

(1)源字符串必以‘\0’结束

(2)会将源字符串中的‘\0’拷贝到目标空间

(3)目标空间必须足够大,以确保能存放原字符串

(4)目标空间必须可修改。//可理解为源目标字符串时赋值给数组的。

(2)strcpy的模拟实现

代码:

#include<stdio.h>
#include<assert.h>
char* my_strcpy(char* dest, const char* src)
{
    assert(src != NULL);
    assert(dest != NULL);
    char* ret = dest;
    while(*src != '\0')
    {
        *dest = *src;
        dest++;
        src++;
    }
    *dest = '\0';
    return ret;
}
int main()
{
    char arr1[] = "hello peter";
    char  arr2[20] = "xxxxxxxxxxxxxxxxxx";
    char* ret = my_strcpy(arr2, arr1);
    printf("%s\n", ret);
    return 0;
}

2、strcat的使用和模拟实现(连接字符串)

注意:使用strcat函数时要保函头文件:string.h

(1)strcat的使用

strcat原型:char*   strcat(char* destination,  char*   source);

作用是:追加source指向的字符串到destination指向的字符串中。

代码示例:

代码:

#define  _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[20] = "hello";
char  arr2[] = "  world";
strcat(arr1, arr2);
printf("%s\n", arr1);
return 0;
}

strcat使用注意事项:

(1)原字符串必须以‘\0’结束

(2)目标字符串也得有‘\0’,否则没办法知道追加从哪里开始

(3)目标空间必须有足够的大,能容纳下原字符串的内容

(4)目标空间必须可修改(与strcpy一样)

(2)strcat的模拟实现

代码:

#define  _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<assert.h>
char* my_strcat(char* dest, const char* src)
{
    assert(dest != NULL);
    assert(src != NULL);
    char* ret = dest;
    //1、找到目标空间的'\0'
    while (*dest != NULL)
    {
        dest++;
    }
    //2、拷贝
    while (*src != NULL)
    {
        *dest = *src;
        dest++;
        src++;
    }
    *dest = '\0';
    return ret;
}
int main()
{
    char arr1[20] = "hello ";
    char arr2[] = "world!";
    char* s = my_strcat(arr1, arr2);
    printf("%s\n", arr1);
    printf("%s\n", arr2);
    printf("%s\n", s);
    return 0;
}


http://www.kler.cn/a/354831.html

相关文章:

  • WebRTC Simulcast 大小流介绍与优化实践
  • 使用VS Code开发ThinkPHP项目
  • 数据结构(哈希表(中)纯概念版)
  • 深入理解 Java 中的接口(Interface)
  • 3.若依前端项目拉取、部署、访问
  • 16、【ubuntu】【gitlab】【补充】服务器断电后,重启服务器,gitlab无法访问
  • 远程控制手机时,怎样用电脑键盘给手机输入文本?
  • 自动化数控走心机
  • 分布式事务及seata解决方案
  • 《Linux从小白到高手》综合应用篇:深入理解Linux磁盘及IO优化
  • 【原创】java+springboot+mysql校园留言墙管理系统设计与实现
  • gitlab操作和管理
  • 从Maya对象中获取单个坐标值
  • Spring Boot 核心理解-嵌入式服务器
  • 怎么将视频速度调慢?视频速度调慢的快速方法
  • 基于springboot驾校管理系统
  • Xshell上Linux的基础指令
  • Axure树形菜单展开与折叠
  • 【机器学习(十三)】零代码开发案例之股票价格预测分析—Sentosa_DSML社区版
  • private field is never assigned
  • 百度智能云千帆 ModelBuilder 大模型服务及开发解读
  • Spark SQL 的离线数仓开发
  • Java学习之 状态机 机制
  • 一些简单的编程题(Java与C语言)
  • canvas鼠标点击特效
  • 【godot游戏引擎学习笔记】初识界面