C言語なら俺に聞け(入門編)Part 81
■ このスレッドは過去ログ倉庫に格納されています
0602デフォルトの名無しさん
2011/04/13(水) 16:59:40.49関数の外部からくるサイズのわからないchar*の変数srcから
charの変数destに文字列をコピーしたいのですが、下記のようなコードで問題無いでしょうか?
destのバッファより大きなsrcがきた場合は切り捨てても問題ありません。
char dest[1025];
ZeroMemory(dest, sizeof(dest));
strncpy(dest, src, sizeof(dest) - 1);
気になったのは、srcがdestより小さい場合、strncpyでsrcの領域を超えてコピーすることになるので、
おかしな事にならないかと言うことです。
また、strncpyの際にsizeから-1しているのは、常に最後の\0を保持するために必要という理解です。
小さい方のサイズでコピーするとか下記のようにやらないと駄目でしょうか?
strncpy(dest, src, strlen(src) < sizeof(dest) - 1 ? strlen(src) : sizeof(dest));
■ このスレッドは過去ログ倉庫に格納されています