Cで文字列を動的に割り当てるとき、文字列charの\ 0の末尾を数えますか?文字列のためにCでメモリを動的に割り当てるとき、文字列charの 0終わりを数えますか?
char *copyInto, *copyFrom="test";
// Should
copyInto = (char*)malloc(strlen(copyFrom));
// suffice?
// or should this be the following?
copyInto = (char*)malloc(strlen(copyFrom)+1);
// assuming you want to copy the string from copyFrom into copyInto
strcpy(copyInto,copyFrom);
// Does anyone recommend just \0-ing the whole copyInto as in
copyInto = (char*)calloc(strlen(copyFrom)+1);
// and if so, should it still be (strlen(copyFrom)+1) size?
あなたはそのヌルターミネーターを保管する予定ですか? –
私はボディではなくタイトルを読みました。答えははいです。長さに1文字を加えて割り当てます。 – asveikau
@ K-balloもし私がそのヌルターミネータを保存していないのであれば、C stdlibの文字列処理関数は文字列の終了位置を知らないでしょうか?最後の有効な文字位置に続くメモリバイトが\ 0に設定されていない場合、Cの文字列プロセッサは最初の\ 0まで継続します。最後の文字の後に続くバイトが\ 0であることを保証することはできません。 –