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

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

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

函数接口定义:

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

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

裁判测试程序样例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#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;
}

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

输入样例:

1
2
7
happy new year

输出样例:

1
new year
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#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 ReadString(char s[]){
gets(s);
}
void strmcpy(char *t, int m, char *s)
{
int i, j, length;
length=0;
while (t[length] != '\0')
length++;
j = 0;
if (m>0 && m<=length)
{
for (i=m-1; t[i] !='\0'; i++)
{
s[j] = t[i];
j++;
}
s[j] = '\0';
}
else
s[0] = '\0';
}
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×