
生徒
strcpyって何ですか?

先生
strcatとは「string(文字列)」を「copy(コピーする)」と言う言葉を省略したものだよ

生徒
なるほど。文字をコピーしたいときに使う関数なんですね。

先生
そうだね。実際に仕様や使い方を見てみようか。
仕様
#include <string.h>
char *strcpy(char *strDest, const char *strSrc);
概要 | 文字列をコピーする |
ヘッダ | #include <string.h> |
関数概要 | char *strcpy(char *strDest, const char *strSrc) |
戻り値 | s2の値をs1にコピーし、s1を返す。 |
使い方
文字列の用意
#include <stdio.h>
int main(void) {
char s1[] = "Hello ";
char s2[] = "World";
printf("%s\n", s1);
printf("%s\n", s2);
return 0;
}
Hello
World
文字列のコピー
次にstring.hライブラリのstrcpy関数を使って文字列をコピーします。
#include <stdio.h>
#include <string.h>
int main(void) {
char str1[] = "Hello";
char str2[] = "World";
printf("%s\n", str1);
strcpy(str1, str2); // コピー
printf("%s\n", str1);
}
Hello
World // コピーできています
自作してみる
それでは、仕様に従って自作してみます。
仕様は以下のような関数になっております。
char *strcpy(char *strDest, const char *strSrc){
}
中身を書いてみましょう
char *strcpy(char *s1, const char *s2) {
size_t i;
for (i = 0; *s2 != '\0'; i++) {
*s1 = *s2;
s1++;
s2++;
}
*s1 = '\0';
return s1;
}
図による説明


これで、自作strcpy関数の作成完了です。
最後に、実行してみましょう。
#include <stdio.h>
char *strcpy(char *s1, const char *s2) {
size_t i;
for (i = 0; *s2 != '\0'; i++) {
*s1 = *s2;
s1++;
s2++;
}
*s1 = '\0';
return s1;
}
int main(void) {
char str1[] = "Hello";
char str2[] = "World";
printf("%s\n", str1);
strcpy(str1, str2);
printf("%s\n", str1);
}
Hello
World
コメント