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

c语言笔记 字串串函数---strcat,strncat,strcpy,strncpy

目录

函数strcat

注意

那么们要怎么防止这种越界的情况呢?

函数strncat

注意

函数strcpy 和 函数strncpy

注意


函数strcat

  1. 功能:将两个字符串拼接起来,strcat(char *dest,const char *str)
  2. 头文件:#include
  3. 返回值:返回一个拼接好字符串的指针 -----等价于dest 数组名代表首元素地址 也可以另外顶一个指针去接收
dest:指向的目标内存,拼接好的字符串最后存储的地方
str:需要拼接的字符串,在dest后面拼接上去
strcat(数组名,字符串)

注意

  • strcat函数是不限制拼接字符的大小,所以可能会出现超过最大范围的情况

那么们要怎么防止这种越界的情况呢?

        strcat函数没法系统自动的帮我计算越界情况,只能人工的去计算,还有一种更加安全且不会越界的函数

函数strncat

  1. 功能:将两个字符串凭借起来
  2. strncat(char *dest,const char *str,n)
  3. strncat(char dest[],const *str .n)
  4. 头文件#include
  5. 返回值:返回拼接好字符串的指针,等价于数组名dest
dest:指向目标的内存,最终存储拼好的字符串
str:需要拼接的字符串
n:可以拼接最多str字符串中多少个字符进去目标内存 通常是 sizeof(dest)-strlen(str)-1
sizeof(dest)-strlen(str)-1   这里的-1是为了给结束标识\0留一个位置
strncat(数组名,字符串,需要拼接的个数)

注意

strncat函数最多可以拼接n+1个字符,+1是为其留下结束标志\0;n是str中代表多少个字符进去拼接。

代码运用:

#include <stdio.h>
#include <string.h>
int main()
{
    char s[15] = "abc";
    char x[15] = "abc";
    // strcat(s,"ooopppqqq");  //会返回一个指针 我们可以用一个char指针来存 也可以不用
    char *p = strcat(s, "ooopppqqq");
    printf("%s\n", s);
    printf("%s\n", p);
    char *q = strncat(x, "asaadfffadfghjklqerer",sizeof(x)-strlen(x)-1);
    printf("%s\n",q);
    printf("%s\n",x);
    return 0;
}

函数strcpy 和 函数strncpy

  1. 功能:都是将一个字符串拷贝到一个数组中
  2. 函数strncpy相比于strcpy更加的安全。 推荐使用strncpy
  3. 头文件 #include
  4. strcpy(char *dest,char *str) <==> strcpy(char dest[],char *str) <==> strcpy(数组名,字符串)
  5. strncpy(char *dest,char *str,n) <==> strncpy(char dest[],char *str,n) <==> strcpy(数组名,字符串,复制的个数)
  6. dest是数组名,首元素的地址
  7. str一个指针字符串的指针,代表字符串的地址

注意

  • strcpy和strncpy两个函数都会把原先的数组里面的元素覆盖掉
  • strncpy()可以复制n+1个字符到数组dest中,最后一个字符是结束符\0,如果字符串最后没有结束标志\0,那么就不是一个合法的字符串,可能让程序报错。

代码运用:

#include <stdio.h>
#include <string.h>
int main()
{
    char s[6] = "abc";
    char x[6] = "def";
    char ss[] = "hello";
    char *p = strcpy(s, ss);
    printf("%s\n", s); // 会把abc覆盖掉
    printf("%s\n", p);
    strncpy(x, ss, sizeof(x) - 1);
    printf("%s\n", x);//会把def覆盖掉 
    return 0;
}

总结:strncpy函数中-1是为了让最后一位是结束标识符,让其是一个合法的字符串 strncpy最多可以放n+1个字符,n是实际复制过去的字符个数 +1是给结束标识留一个位置 例如 strncpy(x,ss,5); x是有六个位置的,我们要留一个位置出来 所以strncp最多可复制5+1个

相关文章:

  • 【上市公司文本分析】Python+Pytorch微调BERT预训练模型,使用大语言模型完成文本分类任务——金星晔等(2024)《经济研究》大语言模型方法的复现
  • 基于大语言模型与知识图谱的智能论文生成工具开发构想
  • STM32学习【5】用按键控制LED亮灭(寄存器)以及对位运算的思考
  • LeetCode 2614.对角线上的质数:遍历(质数判断)
  • ★ Linux ★ 进程(上)
  • 深度解析manus:技术原理剖析、开源平替方案架构分析
  • kali破解Pdf/execl/word
  • 汽车一键启动PKE无钥匙系统
  • 使用C++写一个递推计算均方差和标准差的用例
  • 使用pyinstaller打包py文件
  • SQL注入第6关
  • 如何用日事清做研发目标、需求、规划、迭代、Bug、效能、复盘、绩效一站式管理
  • 3月18号
  • 7种数据结构
  • ubuntu安装NVIDIA显卡驱动及CUDA环境
  • 【MySQL】关闭外键约束检查
  • python-leetcode 47.组合总和
  • Redis 面试思路
  • 深度学习-148-langchain之如何使用with_structured_output()从模型中返回结构化数据
  • 机试准备第19天
  • 哈马斯:愿与以色列达成为期5年的停火协议
  • 保险经纪公司元保在纳斯达克挂牌上市,去年净赚4.36亿元
  • 净海护渔,中国海警局直属第一局开展伏季休渔普法宣传活动
  • 五一期间全国高速日均流量6200万辆,同比增长8.1%
  • 人民日报社论:坚定信心、奋发有为、创新创造——写在“五一”国际劳动节
  • 媒体:酒店、民宿临时毁约涨价,怎么管?