长度不受限制的字符串函数:有strcpy,strcmp,strcat函数,长度受限制的字符串函数:strncmp,strncat,strncpy

strcpy,strcat,strcmp:拷贝到不能拷贝,追加到不能追加,比较到不能比较,以‘\0'作为结束标志,所以说是长度不受限制的字符串函数。但是也有些问题,例如strcpy,如果拷贝的目的空间不够,而拷贝的时候拷贝到’\0'才停止,所以这个函数就会变得不安全。

strcpy:

可以看到程序输出但是崩溃了

#include<stdio.h>

#include<string.h>

int main()

{

char arr1[5] = "abc";

char arr2[] = "defghijk";

printf("%s\n", strcpy(arr1, arr2));

return 0;

}

strcmp,strcat,strcpy和strncmp,strncat,strncpy的区别比较_字符串函数


因为这些函数不受长度限制,导致不安全,所以就有了后来的长度受限制的字符串函数

strncpy:char* strncpy(char* dest,const char* src,size_t num);

#include<stdio.h>

#include<string.h>

int main()

{

char arr1[5] = "haha";

char arr2[] = "hello";

strncpy(arr1, arr2,2); //2是限制拷贝的个数,个数如果超出本身的数,后面补‘\0'

printf("%s\n", arr1);

return 0;

}

拷贝num个字符从源字符串到目标空间;

如果源字符串的长度小于num,则拷贝完字符串后,在目标的后面追加0,直到num个;

strncat:
char*strncat(char*dest,const char*src,size_t num);
#include<stdio.h>

#include<string.h>

int main()

{

char arr1[20] = "hello,world!";

char arr2[] = "abcd";

strncat(arr1, arr2, 4);//追加过去后会

printf("%s\n", arr1);

return 0;

}

1.如果源字符串的长度小于num,后面的也不用管了;注意和strncpy区分;

2.追加过去后会主动加一个’\0'

strncmp:
int strncmp(const char*string1,const char*string2,size_t count);
#include<stdio.h>

#include<string.h>

int main()

{

const char* p1 = "hello,world!";

const char* p2 = "abcd";

int ret=strncmp(p1, p2, 2);

printf("%d\n", ret);

return 0;

}