习题8-5 使用函数实现字符串部分复制 (20 分)

习题8-5 使用函数实现字符串部分复制 (20 分)

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

函数接口定义:

void strmcpy( char *t, int m, char *s );

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

裁判测试程序样例:

#include
#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;

}

/* 你的代码将被嵌在这里 */

输入样例:

7
happy new year

输出样例:

new year

思路:

先确定输入字符串的长度,然后在从需要m个字符(对应数组下标m-1)开始赋值给另一个字符串
在复制完之后加上’\0’

#include 
#include 
#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;
}
void ReadString( char s[] )
{
    gets(s);
}
void strmcpy( char *t, int m, char *s )
{
    int i,j,cnt=strlen(t);
    for(i=m-1,j=0;i<cnt;i++,j++)
    {
        s[j]=t[i];
    }
    s[j]='\0';//在字符串最后加上\0表示字符串结束
}

运行结果:
习题8-5 使用函数实现字符串部分复制 (20 分)_第1张图片

你可能感兴趣的:(函数题45)