今回はC言語の
memset関数
strncpy関数
の説明をします。

memset関数
1 2 |
#include <string.h> void *memset(void *s, int c, size_t n); |
第一引数 配列sの先頭アドレス
第二引数 cで配列を埋める
第三引数 先頭アドレスからnサイズ分だけ
返り値 sの先頭アドレス
memset関数は、メモリに値をセットする関数です。
つまり、配列sの先頭アドレスからn文字分だけ値cをセットします。
strncpy関数
1 2 |
#include <string.h> char *strncpy(char *s1, const char *s2, size_t n); |
第一引数 文字列s1の先頭アドレス(コピー先)
第二引数 文字列s2の先頭アドレス(コピー元)
第三引数 コピーするサイズ
返り値 s1の先頭アドレス
strncpy関数は、stringをcopyする関数です。
つまり、文字列s2のn文字分だけ文字列s1にコピーします。
※strcpy関数は、コピーサイズを指定しない。
(strncpyではなくstrcpyです。nがないことに注意です。)
char *strcpy(char *s1, char *s2);
s2をs1にまるごとコピーする。
サンプルプログラムはこちらです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#include <string.h> #include <stdio.h> int main(void) { char s1[5]; char s2[5]; int i; size_t n=3; memset(s1, 'a', sizeof(s1));//s1にaをセット memset(s2, 'b', sizeof(s2));//s2にbをセット printf("\n");//実行結果を見やすくするために挿入 for(i=0; i<5; i++){ printf("s1[%d] : %c\n", i, s1[i]);//s1の表示 } strncpy(s1, s2, n);//s2の三文字分をs1にコピー printf("\n"); for(i=0; i<5; i++){ printf("s1[%d] : %c\n", i, s1[i]);//コピー後のs1の表示 } printf("\n"); return 0; } |
実行結果は以下になります。

最後まで読んでいただきありがとうございました。