首页 > 其他分享 >字符函数和字符串函数(二)

字符函数和字符串函数(二)

时间:2024-08-21 23:52:48浏览次数:11  
标签:字符 函数 指向 destination char source num 字符串

有任何不懂的问题可以评论区留言,能力范围内都会一一回答

1.strcpy

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

这个函数的功能是复制字符串

source指向的 C 字符串复制到指向destination的数组中,包括终止 \0 字符(并在该点处停止)。

为避免溢出,destination指向的数组的大小应足够长,以包含与source相同的 C 字符串(包括终止 \0 字符),并且不应在内存中与source重叠。

destination:指向要复制内容的目标数组的指针。

source:指向要复制的 C 字符串的指针。

返回值:返回 destination

注意事项:

1.源字符串必须以'\0'结束。
2.会将源字符串中的'\0'拷贝到目标空间。
3.目标空间必须足够大,以确保能存放源字符串。
4.目标空间必须可修改。

5.strcpy会覆盖掉destination所指向的数组,但不会改变source所指向的数组

2.strcat

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

这个函数的功能是连接字符串

source指向的字符串的副本追加到destination指向的字符串。destination指向的字符串 中的终止 null (\0)字符被 source 指向的字符串的第一个字符覆盖,并且 null(\0) 字符包含在由 destination 指向的字符串 中两者的串联形成的新字符串的末尾。

destination:指向目标数组的指针,该数组应包含 C 字符串,并且应足够大以包含连接的结果字符串。

source:指向要追加的 C 字符串的指针。

返回值:返回 destination

1. 源字符串必须以'\0'结束。
2.目标字符串中也得有'\0',否则没办法知道追加从哪里开始。
3.目标空间必须有足够的大,能容纳下源字符串的内容。
4.目标空间必须可修改。

那么思考一下,strcat能否自己给自己追加呢?

是的,strcat函数的source和destination变量可以指向同一个字符串 。不过,这种做法通常不被推荐,因为它会导致字符串的自我连接,可能会产生意外的结果或导致程序错误。

strcat函数的设计目的是将源字符串(source)连接到目标字符串(destination)的末尾。如果source和destination指向同一个字符串,那么该字符串将会被自身连接,这可能导致字符串长度的无限增长,或者在循环过程中由于内存覆盖而导致程序崩溃。

总之,虽然技术上可以将source和destination设置为同一个字符串,但这不是strcat函数的预期使用方式,且可能带来程序逻辑上的问题。因此,建议始终使用不同的字符串作为source和destination。

3.strncpy

char * strncpy ( char * destination, const char * source, size_t num );

这个函数的功能是从字符串中复制字符

source指向的字符串的前 num 个字符复制到destination指向的字符串。如果在复制 num 个字符之前找到source指向的C 字符串的末尾(由 null (\0)字符表示),则 destination 指向的字符串将用\0填充,直到总共写入 num 个字符。

如果 source 的长度大于 num,则不会在目标末尾隐式追加 null 字符。因此,在这种情况下,destination 不应被视为以 null(\0) 结尾的 C 字符串(这样读取它会溢出)。

 source:要复制的 C 字符串。

destination:指向要复制内容的目标数组的指针。

num:

要追加的最大字符数。
size_t 是无符号整数类型。

返回值:返回 destination

简要概括:拷贝num个字符从源字符串到目标空间。
· 如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加\0,直到num个。

4.strncat
char * strncat ( char * destination, const char * source, size_t num );

这个函数的功能是从字符串追加字符

source指向的字符串的前 num 个字符追加到destination指向的字符串,外加一个终止 null 字符。

如果中 C 字符串的长度小于 num,则仅复制直到终止 null 字符的内容。

source:指向目标数组的指针,该数组应包含一个 C 字符串,并且应足够大以包含连接的结果字符串,包括额外的 null 字符。

destination:要追加的 C 字符串。

num:

要追加的最大字符数。
size_t 是无符号整数类型。

返回值:返回 destination

标签:字符,函数,指向,destination,char,source,num,字符串
From: https://blog.csdn.net/Starry_tsx/article/details/141326124

相关文章

  • DDD的函数式编程实现
    DDD是一种成熟的软件设计方法,旨在确保领域专家和开发人员能够有效合作,创造出高质量的软件。本文介绍咋将FP(函数式编程)应用于DDD的实现,使其既优雅又简洁。C4模型中,软件架构图分为四个层次:“系统上下文”、“容器”、“组件”和“代码”。“组件”是构成容器的基本单位,也是本文描......
  • 【JavaScript】字符串01 - padStart() 和 padEnd()
    在JavaScript中,我们可以使用padStart()和padEnd()方法来完成字符串补全。下面给大家介绍一下这两个方法的使用。padStart()方法用于在当前字符串的前面填充指定的字符,直到字符串的长度达到指定的长度。padEnd()方法用于在当前字符串的后面填充指定的字符,直到字符串的长......
  • 六:《Python基础语法汇总》— 函数
    一:函数入门​函数:就是可以重复使用的具有一定功能的代码。除了一些Python内置的函数以外,函数也可以自己定义​自定义函数:通过def定义的函数自定义函数格式:def函数名(参数):函数要去实现的功能代码#调用函数函数名(参数)​命名函数名和参数名时要符合变......
  • Secure Coding in C and C ++ (四)局部静态构造函数 虚函数
    前言上一章节我们讲解了关于C++静态和指针与引用的部分我们先来回顾一下相关的内容:指针说白了就是地址,inta;int*ptr=&a这里的整形指针就是存放的整数变量的地址静态static有两种层面:第一种层面就是在其他的文件里,如果加入了static修饰那么被修饰的在link......
  • 「字符串」前缀函数|KMP匹配:规范化next数组 / LeetCode 28(C++)
    概述为什么大家总觉得KMP难?难的根本就不是这个算法本身。在互联网上你可以见到八十种KMP算法的next数组定义和模式串回滚策略,把一切都懂得特别混乱。很多时候初学者的难点根本不在于这个算法本身,而是它令人痛苦的百花齐放的定义。有的next数组从0下标开始,有的从1开始;有的表......
  • 浅谈面向对象三大特性(着重介绍虚函数实现的多态)
        写在前面:文章内容分享为主,如有不当之处,恳请批评指正。        今天在使用C++的工厂模式的时候,突然发下有些生疏,就想着发一篇博客,巩固一下,但突然想到工厂模式中设计的继承以及多态的特性,决定先发一篇有关于C++多态的文章,其他的就丢给明天吧!一、面向对象三......
  • 字符串函数
    文章目录1.strcmp函数strcmp函数的使用:strcmp函数的模拟实现:2.strncpy函数3.strncat函数4.strstr函数strstr函数的使用:strstr函数的模拟现实:5.strtok函数6.strerror函数1.strcmp函数第⼀个字符串⼤于第⼆个字符串,则返回⼤于0的数字第⼀个字符串等于第⼆个字符串......
  • 字符串信息检测原理代码剖析
    想要用单片机识别一长串字符并执行对应指令,有两种办法:数组法和循环法错误的实例:if(RXDATE=='L') { if(RXDATE=='E') { if(RXDATE=='D') { if(RXDATE=='1') { LED1=0; } if(RXDATE......
  • 正则表达式可以匹配正确的字符串但是不能匹配小美的心
    高情商:省流极简版低情商:怎么连个例子都没有正则表达式常用元字符:. 匹配除换行符以外的任意字符\w 匹配字母或数字或下划线\s 四配任意的空白符\d 匹配数字\n 匹配一个换行符\t 匹配一个制表符^ 匹配字符串的开始$ 匹配字符串的结......
  • 标准IO函数:fprintf和fscanf,fread和fwrite
    1.使用分文件编译,实现注册登录界面,使用fgets,fscanf,fpritnf函数。主函数#include"log.h"intmain(intargc,constchar*argv[]){ intkey; while(1) { printf("**********1.注册**********\n"); printf("**********2.登录**********\n"); printf(&quo......