雁过留声 发表于 2025-3-17 01:59:54

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

目录

函数strcat
注意
那么们要怎么防止这种越界的情况呢?
函数strncat
注意
函数strcpy 和 函数strncpy
注意

函数strcat

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

   

[*]strcat函数是不限制拼接字符的大小,所以可能会出现超过最大范围的情况
   那么们要怎么防止这种越界的情况呢?

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

      
[*]功能:将两个字符串凭借起来
[*]strncat(char *dest,const char *str,n)
[*]strncat(char dest[],const *str .n)
[*]头文件#include
[*]返回值:返回拼接好字符串的指针,等价于数组名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 = "abc";
    char x = "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

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

         

[*]strcpy和strncpy两个函数都会把原先的数组内里的元素覆盖掉
[*]strncpy()可以复制n+1个字符到数组dest中,最后一个字符是结束符\0,如果字符串最后没有结束标志\0,那么就不是一个正当的字符串,可能让程序报错。
   代码运用:
   #include <stdio.h>
#include <string.h>
int main()
{
    char s = "abc";
    char x = "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个;

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: c语言笔记 字串串函数---strcat,strncat,strcpy,strncpy