[PTA]实验8-2-4 使用函数实现字符串部分复制

Posted Spring-_-Bear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[PTA]实验8-2-4 使用函数实现字符串部分复制相关的知识,希望对你有一定的参考价值。

本题要求编写函数,将输入字符串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;
}

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

输入样例:

7
happy new year

输出样例:

new year
  • 提交结果:

在这里插入图片描述

  • 源码:
#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;
}

/* 你的代码将被嵌在这里 */
void strmcpy(char* t, int m, char* s)
{
	int index = 0;

	// 因数组下标从0开始,故m需要减1
	// 例:字符串"happy new year"中,第七个字符是n,但其数组下标为8
	m--;

	for (m; *(t + m) != '\\0'; m++)
	{
		*(s + index) = *(t + m);
		index++;
	}

	// 将字符串结束符存入字符串尾
	*(s + index) = '\\0';
}

// 自我实现,假设以#结束字符串输入
void ReadString(char s[]) /* 由裁判实现,略去不表 */
{
	for (int i = 0; i < MAXN; i++)
	{
		s[i] = getchar();

		if (s[i] == '#')
		{
			s[i] = '\\0';
			break;
		}
	}
}

以上是关于[PTA]实验8-2-4 使用函数实现字符串部分复制的主要内容,如果未能解决你的问题,请参考以下文章

[PTA]实验10-5 递归求简单交错幂级数的部分和

[PTA]习题8-5 使用函数实现字符串部分复制

[PTA]实验8-1-3 拆分实数的整数与小数部分

[PTA]实验6-2 分类统计字符个数

[PTA]实验8-2-3 删除字符

[PTA]实验11-1-3 查找星期