char* strncpy(char* dest, const char* src, size_count);
用途:从stc源字符串中拷贝size_count个到dest目标数组中。
注意:
源字符串不可被修改,
目标字符串可以被修改,并且有足够的空间容纳源字符串。
当拷贝的个数(size_count)大于源字符串时,则追加完源字符串后,继续追加'\0'直至要追加个数
当拷贝的个数(size_count)小于源字符串时,则追加完源字符串后,不会自动追加'\0'
#include<stdio.h>
#include<string.h>
#include<assert.h>
char* my_strncpy(char* dest, const char* src, int num ){
assert(dest != NULL);//断言
assert(src != NULL);
char* ret = dest;
//拷贝字符串
while((num--) && (*ret++ = *src++ )){
;
}
num++;
while(num--){ //拷贝的个数大于源字符串的长度
*ret++ = '\0';
}
return dest;
}
int main(){
char arr1[30] = "hello ";
char arr2[] = "hello world!";
char* ret2 = my_strncpy(arr1,arr2,8);
//当拷贝个数大于源字符串长度时,追加完源字符串数,则继续追加'\0'直至等于追加个数
printf("%s\n",ret2);
//char* ret1 = strncpy(arr1,arr2,3);
//当拷贝个数小于源字符串长度时,追加完原字符串数,不会自动补'\0'
//printf("%s\n",ret1);
return 0;
}