习题11-4 字符串的连接 (15 分)
本题要求实现一个函数,将两个字符串连接起来。
函数接口定义:
char *str_cat( char *s, char *t );
函数str_cat
应将字符串t
复制到字符串s
的末端,并且返回字符串s
的首地址。
裁判测试程序样例:
#include <stdio.h>
#include <string.h>
#define MAXS 10
char *str_cat( char *s, char *t );
int main()
{
char *p;
char str1[MAXS+MAXS] = {'\0'}, str2[MAXS] = {'\0'};
scanf("%s%s", str1, str2);
p = str_cat(str1, str2);
printf("%s\n%s\n", p, str1);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
abc
def
输出样例:
abcdef
abcdef
代码:
char *str_cat( char *s, char *t )
{
char *p = NULL; //定义指针p,用于连接
char *q = s; //定义指针q,用于返回s的首地址
int s_len = strlen(s);
int t_len = strlen(t);
p = s + s_len; //p指向s的末尾字母后一位,即'\0'处
int i = 0;
for(int i=0;i<t_len;i++) //这里判断是否复制完毕也可以用for(int i=0;*(t+i) != '\0';i++),即判断是否指向'\0'
{
*(p+i) = *(t+i); //依次复制
}
*(p + t_len) = '\0'; //最后加上'\0'
return q;
}