MW211 EXIT

devlog
C言語/文字列のコピー(2)
2012年10月23日
もう少し踏み込んで条件分岐されるならこんな感じか。
┌──────────────────────────────────────┐
│if (strlen(入力元) < sizeof(出力先)) {                                      │
│    strcpy(出力先, 入力元);                                                 │
│} else {                                                                    │
│    snprintf(出力先, sizeof(出力先), "%s", 入力元);                         │
│}                                                                           │
└──────────────────────────────────────┘
出力先は末尾の「\0」も含んだバッファサイズ(sizeof())で算出し
入力元はあくまで文字数(strlen)。
「文字数+\0≦バッファサイズ」つまり「文字数<バッファサイズ」なら
strcpy()を発動してしまってよいということになる。
分類:C/C++