【MAC上学習C++】Day 19-3.練習問題8-5関数を用いて文字列部分複製を実現(20点)
1010 ワード
練習問題8-5関数を用いて文字列部分のコピーを実現する(20点)
1.タイトルの抜粋
https://pintia.cn/problem-sets/12/problems/338
2.テーマ内容
この問題では、入力文字列tのm番目の文字から始まるすべての文字を文字列sにコピーする関数を記述する必要があります.
関数インタフェースの定義:
void strmcpy( char *t, int m, char *s ); 関数strmcpyは、入力文字列char*tのm番目の文字から始まるすべての文字を文字列char*sにコピーします.mが入力文字列の長さを超える場合、結果文字列は空白列であるべきである.
サンプルを入力:
7 happy new year
出力サンプル:
new year
3.ソース参照
1.タイトルの抜粋
https://pintia.cn/problem-sets/12/problems/338
2.テーマ内容
この問題では、入力文字列tのm番目の文字から始まるすべての文字を文字列sにコピーする関数を記述する必要があります.
関数インタフェースの定義:
void strmcpy( char *t, int m, char *s ); 関数strmcpyは、入力文字列char*tのm番目の文字から始まるすべての文字を文字列char*sにコピーします.mが入力文字列の長さを超える場合、結果文字列は空白列であるべきである.
サンプルを入力:
7 happy new year
出力サンプル:
new year
3.ソース参照
#include
using namespace std;
#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
", &m);
ReadString(t);
strmcpy(t, m, s);
printf("%s
", s);
return 0;
}
void ReadString(char s[])
{
cin.getline(s, MAXN);
return;
}
void strmcpy(char *t, int m, char *s)
{
int n = strlen(t);
if (m < n) {
for (int i = 0; i <= n - m; i++) {
s[i] = t[m + i - 1];
}
}
return;
}