c++上的输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入一个字符串 t 和一个正整数 m,将字符串 t 中从第 m 个字符开始的全部字符复制到字符串 s 中,再输出字符串 s。 要求定义并调用函数 strmcpy(s,t,m), 它的功能是将字符串 t 中从第 m 个字符开始的全部字符复制到字符串 s 中,函数形参s和t的类型是字符指针,形参m的类型是int,函数类型是void。 输入输出示例:括号内为说明,无需输入输出
时间: 2023-06-10 07:07:55 浏览: 100
C++输入一个字符串,把其中的字符按照逆序输出的两种方法解析
下面是代码实现:
```c
#include <stdio.h>
#include <string.h>
void strmcpy(char *s, char *t, int m);
int main()
{
int repeat;
scanf("%d", &repeat);
while (repeat--)
{
char t[100], s[100];
int m;
scanf("%s %d", t, &m);
strmcpy(s, t, m);
printf("%s\n", s);
}
return 0;
}
void strmcpy(char *s, char *t, int m)
{
strcpy(s, t + m - 1);
}
```
在上述代码中,我们定义了 `strmcpy()` 函数,它的作用是将字符串 `t` 中从第 `m` 个字符开始的全部字符复制到字符串 `s` 中。
在 `main()` 函数中,我们首先读入 `repeat`,表示测试数据组数。然后对于每一组数据,我们依次读入 `t` 和 `m`,调用 `strmcpy()` 函数将从第 `m` 个字符开始的全部字符复制到 `s` 中,最后输出 `s`。
需要注意的是,在 `strmcpy()` 函数中,我们使用了 `strcpy()` 函数将 `t` 中从第 `m` 个字符开始的子串复制到了 `s` 中,因为 `strcpy()` 函数可以复制一个字符串的全部字符。但是,我们需要将 `t` 中的子串从第 `m` 个字符开始复制,因此在将 `t` 的指针传给 `strcpy()` 函数时需要加上 `m - 1`。
另外,我们在 `main()` 函数中定义了两个字符串 `t` 和 `s`,它们的长度都为 100。在实际使用中,应根据具体情况定义合适长度的字符串。
阅读全文