strcpy、strncpy、strcat、strncat、strcmp、strstr字符串函数的使用和模拟

本文主要是介绍strcpy、strncpy、strcat、strncat、strcmp、strstr字符串函数的使用和模拟,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

strcpy的使用和模拟(作用)

将一个字符串的内容复制到另外一个字符串中代替掉。

strcpy的使用效果

#include <stdio.h>
#include <string.h>int main ()
{char str1[]="Sample string";char str2[40];char str3[40];strcpy (str2,str1);strcpy (str3,"copy successful");printf ("str1: %s\nstr2: %s\nstr3: %s\n",str1,str2,str3);return 0;
}

strcpy效果模拟

strcpy函数的使用参数

接下来我们对strcpy函数进行模拟

//strcpy只用于字符串复制,遇到‘\0’时停止,还会复制字符串的结束符'\0';
//所以源字符串必须以’\0’结束,也会将源字符串的’\0’拷贝到目标空间
#include<stdio.h>
#include<assert.h>char*my_strcpy(char*dest,const char*str)
{assert(dest && str);char* ret = dest;while (*dest++ = *str++)//*dest++先使用dest后使用++{;}return ret;
}
int main()
{char arr1[] = "I LOVE YOU";char arr2[] = "he he";my_strcpy(arr1, arr2);printf("%s", arr1);return 0;
}

strncpy的使用和模拟

strncpy的使用效果


#include<stdio.h>
#include<string.h>
int main()
{char str1[] = "abcdef";char str2[] = "yes";strncpy(str1, str2, 3);printf("%s", str1);return 0;
}

strncpy效果模拟

strncpy函数的使用参数

接下来我们对strncpy函数进行模拟


#include<stdio.h>
#include<string.h>
char* my_strncpy(char* str1, const char* str2, size_t n)
{if (str1 == NULL || str2 == NULL)//判空return 0;char* start = str1;//记录目标数组首地址while (n && (*str1++ = *str2++))//复制字符串,并考虑n小于或等于被拷贝字符串数目的情况{n--;}if (n)//如果n大于被拷贝字符串数目,须将除被拷贝字符的其他内容用空字符进行补充{while (n){*str1++ = '\0';n--;}}return start;
}
int main()
{char str1[] = "abcdef";char str2[] = "yes";my_strncpy(str1, str2, 2);printf("%s", str1);return 0;
}

strcat的使用和模拟(作用)

将一个字符串中的内容追加到另外一个字符串后面

strcat的使用效果

#include <stdio.h>
#include <string.h>int main ()
{char str[80];strcpy (str,"these ");strcat (str,"strings ");strcat (str,"are ");strcat (str,"concatenated.");puts (str);return 0;
}

strcat效果模拟

strcat函数的使用参数

接下来我们对strcat函数进行模拟

#include<stdio.h>
#include<assert.h>
char* my_strcat(char* dest, const char* arr)
{char* ret = dest;assert(dest && arr);while (*dest != '\0')dest++;while (*dest++ = *arr++){;}return ret;
}
int main()
{char str1[20] = "I LOVE YOU";char str2[] = "abcd";my_strcat(str1, str2);printf("%s\n", str1);return 0;
}

strncat的使用和模拟

strncat的使用效果

#include<stdio.h>
#include<string.h>
#include<assert.h>
int main()
{char str1[20] = "abcdef";char str2[] = "yes";//这里是特别需要注意的,在创建str1的空间的时候,我们需要给str1创建足够大的空间//以此来容纳str1和str2的空间strncat(str1, str2, 4);printf("%s\n", str1);return 0;
}

strncat效果模拟

strncat函数的使用参数

接下来我们对strncat函数进行模拟

#include<stdio.h>
#include<string.h>
#include<assert.h>
char* my_strncat(char*str1, const char*str2, size_t num)
{assert(str1 && str2);char* start = str1;while (*str1){str1++;}while (num--){*str1++ = *str2++;}*str1 = '\0';return start;
}
int main()
{char str1[20] = "abcdef";char str2[] = "yes";my_strncat(str1, str2, 2);printf("%s\n", str1);return 0;
}

strcmp的使用和模拟(作用)

strcmp函数比较两个字符串的大小
大于则返回大于0的数字,小于返回小于0的数字,等于则返回0。

strcmp的使用效果

#include <stdio.h>
#include <string.h>int main ()
{char key[] = "apple";char buffer[80];do {printf ("Guess my favorite fruit? ");fflush (stdout);scanf ("%79s",buffer);} while (strcmp (key,buffer) != 0);puts ("Correct answer!");return 0;
}

strcmp效果模拟

接下来我们对strcmp函数进行模拟


#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 arr1[] = "abcdef";char arr2[] = "abdcef";int ret = my_strcmp(arr1, arr2);printf("%d ", ret);return 0;

strstr的使用和模拟(作用)

strstr的使用效果

从字符串1中找到字符串2相同的字符串,然后输出字符串1中从字符串2相同位置开始的字符到‘\0’,如果没有就不输出

#include <stdio.h>
#include<string.h>
int main()
{char str[] = "abcdefabcdef";char* p = "fab";char* ret = strstr(str, p);if (ret == NULL){printf("不存在");}else{printf("%s", ret);}return 0;
}

strstr效果模拟

接下来我们对strstr函数进行模拟

#include <stdio.h>
#include<string.h>
#include<assert.h>
char* my_strstr(const char* str, const char* str1)
{assert(str && str1);char* pc = str;const char* s1 = NULL;const char* s2 = NULL;if (*str1 == '\0')return str;while (*pc != '\0'){s1 = pc;s2 = str1;while (*s1 && *s2 && *s1 == *s2){s1++;s2++;}if (*s2 == '\0')return pc;pc++;}return NULL;
}
int main()
{char str[] = "abbbdefabcdef";char* p = "bbd";const char* ret = my_strstr(str, p);printf("%s ", ret);return 0;
}

看到这里的小伙伴,帮忙点个赞,谢谢!

这篇关于strcpy、strncpy、strcat、strncat、strcmp、strstr字符串函数的使用和模拟的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1020412

相关文章

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

Kotlin 作用域函数apply、let、run、with、also使用指南

《Kotlin作用域函数apply、let、run、with、also使用指南》在Kotlin开发中,作用域函数(ScopeFunctions)是一组能让代码更简洁、更函数式的高阶函数,本文将... 目录一、引言:为什么需要作用域函数?二、作用域函China编程数详解1. apply:对象配置的 “流式构建器”最

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(