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]