//第一次尝试:
#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个字节。
//代码实现很简单,需要注意参数合法性检验