题干
本题要求实现一个函数,即字符串“n”族连接函数StrNcat,将两个字符串连接起来。
函数接口定义: char *MyStrNcat( char *dst, char *src, int n );
此函数把字符串src中的前n个字符连接到到dst后面,并以’\0’终止该串,原dst后面的’\0’被src的第一个字符覆盖。函数返回指向dst的指针。
裁判测试程序样例:
#include <stdio.h>
#include <string.h>
#define MAXS 10
char *MyStrNcat( char *dst, char *src, int n );
int main()
{
char *p;
char str1[MAXS+MAXS] = {'\0'}, str2[MAXS] = {'\0'};
gets(str1);//输入目的字符串
gets(str2);//输入源字符串
int n;
scanf("%d",&n);//输入连接长度
char * new_dst;//函数调用返回目的字符串指针
new_dst = MyStrNcat(str1, str2, n);
printf("%s\n", new_dst);
return 0;
}
/* 你的代码将被嵌在这里 */
样例
输入样例:
abc
def
2
输出样例:
abcde
解题过程及思路
char *MyStrNcat(char *dst, char *src, int n) {
char *p = dst + strlen(dst); // 将指针p指向dst字符串的末尾
while (n-- > 0 && *src != '\0') { // 拷贝src字符串的前n个字符到dst字符串中
*p++ = *src++;
}
*p = '\0'; // 在新的dst字符串末尾添加结束符'\0'
return dst;
}