私が存在すると約束する理由により、入力を 1 文字ずつ読み取り、文字が特定の基準を満たしている場合は、動的に割り当てられたバッファーに書き込みます。この関数は、指定された文字列の「末尾」に指定された文字を追加します。バッファから読み取るとき、最初の「サイズ」文字を読み取ります。
void append(char c, char *str, int size)
{
if(size + 1 > strlen(str))
str = (char*)realloc(str,sizeof(char)*(size + 1));
str[size] = c;
}
この関数は、さまざまな開発の反復により、「破損した二重リンク リスト」、「二重解放または破損」などのエラーを生成しました。以下は、append の使用方法のサンプルです。
// buffer is a string
// bufSize is the number of non-garbage characters at the beginning of buffer
char *buft = buffer;
int bufLoc=0;
while((buft-buffer)/sizeof(char) < bufSize)
append(*(buft==),destination,bufLoc++);
通常、一見任意の数の文字に対して機能し、エラーで中止されます。2 番目のコード スニペットが何を行っているかが明確でない場合は、バッファーからコピー先の文字列にコピーしているだけです。これにはライブラリメソッドがあることは知っていますが、時々正確にコピーされるものをもう少し細かく制御する必要があります。
洞察をお寄せいただきありがとうございます。私は困惑しています。