🚩字符串部分复制

💻一) 题目要求

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

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

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

裁判测试程序样例:
#include <stdio.h>
#define MAXN 20

void 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';
}
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐