//第一次尝试:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char* myStrncpy(char* destin, const char* source, size_t num) {
if (destin == NULL || source == NULL) {
return NULL;
}
int i = 0;
int j = 0;
for (; i < num; i++) {
if (source[j] == '\0') {
destin[i] = '0';
}
else {
destin[i] = source[i];
j++;
}
}
destin[j] = '\0';
return destin;
}
int main() {
printf("请输入字符串:");
char str1[1024] = { 0 };
scanf("%s", str1);
printf("请输入要拷贝的字符串:");
char str2[1024] = { 0 };
scanf("%s", str2);
printf("输入要拷贝几个字符:");
size_t num = 0;
scanf("%d", &num);
myStrncpy(str1, str2, num);
//strncpy(str1, str2, num);
printf("%s\n", str1);
return 0;
}
//模拟实现strncpy函数:char* (char* destin,const char* source,size_t num);
//(c/c++)复制字符串src中的内容(字符,数字、汉字....)到字符串dest中,复制多少由size_tn的值决定。
//如果src的前n个字符不含NULL字符,则结果不会以NULL字符结束。如果n<src的长度,只是将src的前n个字符复制到dest的前n个字符,
//不自动添加'\0',也就是结果dest不包括'\0',需要再手动添加一个'\0'。如果src的长度小于n个字节,则以0填充dest直到复制完n个字节。
//代码实现很简单,需要注意参数合法性检验