私はC言語を学んでおり、いくつかのC文字列を処理する必要があります。私は本当にCと、特に自由な記憶のものに揺れているので、私の質問が間違っている場合はお知らせください。C文字列の連結とダブルサイズ?
私は空のC文字列、たとえばサイズ5を持っており、一度に1文字ずつそれに文字を追加したいと思います。だから、最初の9文字までは問題ありませんが、9個以上になると、文字を格納するために配列のサイズを拡張する必要があります。だから私はこれを行うための最も簡単な方法は次のようにSTRCATを使用していたと思った:
char orig[] = "hello";
char temp[1];
temp[0] = ' ';
strcat(orig, temp);
temp[0] = 'w';
strcat(orig, temp);
// etc
文字列は、私はprintfの(ORIG)を行うときに、私は何を期待出力しますが、私はサイズを拡張していなかったので、私は心配していますprintf("%d", sizeof(orig))
はまだ5であるが、tempsを追加することでより大きくなるはずだからだ。この問題を解決する最良の方法(簡単な方法)は何ですか?
'のsizeof orig'は、最後の位置(' ORIG [5] ')でNUL終端バイト配列である6です。 – pmg
また、 'char temp [1];'は決して使用可能な文字列ではありません。文字列であるためにはNUL終端バイトが必要ですが、1バイトのスペースしかないので空文字列にしかなりません。 – pmg
GitHubには、['char_vector.h'](https://github.com/dtrebbien/lib_mysqludf_str/blob/master/char_vector.h)と[' char_vector.c'を参照してください。 ](https://github.com/dtrebbien/lib_mysqludf_str/blob/master/char_vector.c)。単に 'char'の動的配列を維持します。 –