字符串部分复制

  • 一) 题目要求
  • 二) 题解

一) 题目要求

要求编写函数,将输入字符串t中从第m个字符开始的全部字符复制到字符串s中。

函数接口定义:
void strmcpy( char *t, int m, char *s );

函数strmcpy将输入字符串char *t中从第m个字符开始的全部字符复制到字符串char *s中。若m超过输入字符串的长度,则结果字符串应为空串。

裁判测试程序样例:
#include #define MAXN 20void strmcpy( char *t, int m, char *s );void ReadString( char s[] ); /* 由裁判实现,略去不表 */int main(){char t[MAXN], s[MAXN];int m;scanf("%d\n", &m);ReadString(t);strmcpy( t, m, s );printf("%s\n", s);return 0;}/* 你的代码将被嵌在这里 */

二) 题解

从第m个字符开始:指向t中第m个元素,第m个元素即*(t+m-1)
循环执行 s = t ; s++; t++; 直到t中遇到 ‘\0’ ,循环结束
⭐注意:最后一次循环,t++以后
t = ‘\0’,s++以后没有执行任何操作,此时s指向的位置是空的
最后在循环外
s = ‘\0’,(给这个空的位置填上结束标志’ \0 ‘)

void strmcpy( char *t, int m, char *s ){t = t+m-1;while(*t!='\0'){*s = *t;s++;t++;}*s = '\0';}