>> C言語関数一覧トップに戻る
今回はC言語のstrncpy関数について説明します。
strncpy関数は指定文字数だけ文字列をコピーできる関数です。
■書式
#include <string.h>
char *strncpy(char *s1, const char *s2, size_t n);
第一引数にはコピー先の配列
第二引数にはコピー元の文字配列
第三引数にはコピーする文字数
をそれぞれ指定します。
注意してほしいのはコピー後の文字列の最後のヌル文字(\0)です。
s2の長さがn以上の時はn文字をコピー後に '\0' は自動的に付加されません。
s2の長さがnより少ない場合はその少ない文字数分を '\0' で埋めてくれます。
自動的にヌル文字が付加されない場合は手動で付加する必要があることを忘れないでください。
■サンプルコード
test1の文字は→123
test1の文字は→abcde
1回目のコピーはs2 > nなので手動で\0を付加しています。
2回目のコピーはs2 < nなので自動的に\0が付加されるため、何もせずに表示しています。
この点だけ注意してください。
>> 【C言語 strstr 使い方】に進む
>> C言語関数一覧トップに戻る
C言語 strncpy 使い方
strncpy関数は指定文字数だけ文字列をコピーできる関数です。
■書式
#include <string.h>
char *strncpy(char *s1, const char *s2, size_t n);
第一引数にはコピー先の配列
第二引数にはコピー元の文字配列
第三引数にはコピーする文字数
をそれぞれ指定します。
注意してほしいのはコピー後の文字列の最後のヌル文字(\0)です。
s2の長さがn以上の時はn文字をコピー後に '\0' は自動的に付加されません。
s2の長さがnより少ない場合はその少ない文字数分を '\0' で埋めてくれます。
自動的にヌル文字が付加されない場合は手動で付加する必要があることを忘れないでください。
■サンプルコード
#include <string.h>
#include <stdio.h>
int main(void)
{
char test1[20] = "ab";
char test2[20] = "12345";
char test3[20] = "abcde";
//test1配列にtest2の文字列を3文字コピー
strncpy(test1,test2,3);
//test2の文字数より少ない3文字だけのコピーなので\0を末尾に付加する必要がある。
test1[3] = '\0';
//表示
printf("test1の文字は→%s\n",test1);
//test1配列にtest3の文字列を8文字コピー
strncpy(test1,test3,8);
//test3の文字数より多い8文字をコピーするので、多い分は\0で埋められるので、
//手動でヌル文字を付加する必要なし。
printf("test1の文字は→%s\n",test1);
return 0;
}
■実行結果test1の文字は→123
test1の文字は→abcde
1回目のコピーはs2 > nなので手動で\0を付加しています。
2回目のコピーはs2 < nなので自動的に\0が付加されるため、何もせずに表示しています。
この点だけ注意してください。
>> 【C言語 strstr 使い方】に進む
>> C言語関数一覧トップに戻る













