本题要求编写函数,将输入字符串t中从第m个字符开始的全部字符复制到字符串s中。
函数接口定义:
void strmcpy( char *t, int m, char *s );
函数strmcpy将输入字符串char *t中从第m个字符开始的全部字符复制到字符串char *s中。若m超过输入字符串的长度,则结果字符串应为空串。
裁判测试程序样例:
#include <iostream>
#include <cstring>
using namespace std;
#define MAXN 20
void strmcpy( char *t, int m, char *s );
int main()
{
char t[MAXN], s[MAXN];
int m;
cin>>m;
cin.ignore();
cin.getline(t,MAXN);
strmcpy(t,m,s);
cout<<s;
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
7
happy new year
输出样例:
new year
答案:
解题思路:
声明题中的函数,数一共几个字符,然后判断是否有意义。如果有意义,将t中第m个字符之后的复制至s,最后加入‘\0‘;如果没意义返回空值,最后返回原函数。
代码思路:
设计两个指针分别指向不同的地址(两个数组),当输入的数n大于输入字符长度时,则返回空值,否则,从一个数组中第n个数开始拷贝至第二个数组。
核心技术总结:
复制寻找的过程。
问题及解决:
开始不懂getline的用法,后来找了资料;把声明和定义弄混了,声明是语句后面要加分号。觉得这道题看起来简单但是自己写总是很多问题,指向空值要用指针。
原文:https://www.cnblogs.com/z-j-y-20181003106-/p/10089575.html