0

私は、char *を取得し、同じcharへのポインターを返す関数を作成する方法を考えようとしていますが、彼の最後にいくつかの定数文字を追加しました。

char* addExtension(char* FileName)
{

}
4

2 に答える 2

2

これが、標準ライブラリ関数strcat()(「文字列連結」用)が行うことだと思います。あなたはそれを使用することを検討する必要があります。

また、バッファオーバーランの危険性にも注意してください。このような関数(さらにstrcat()言えば、)には、使用可能なスペースに関する情報が含まれていないため、本質的に安全ではありません。

于 2013-03-20T11:50:56.587 に答える
0

とにかく任意の文字列ではなく、実際にはそれを行うことはできません。文字列は次のようになります。

  • 定数(文字通りの「helloworld」など)。それらは変更できません
  • Char配列(charthingie [10]など)。彼らはスペースの量を修正しました-あなたがそれを使い果たした場合、あなたは非常に友好的Segmentation faultまたは悪化します。
  • malloc'dポインタ-それらにも固定量のスペースがあり、dである必要がありますfree

文字列をコピーして新しい文字列を返すことはできますが、古い文字列を処理しないと、メモリリークが発生する可能性があります。例

char *copycat(char *first, char *second) {
    char *result = malloc(strlen(first)+strlen(second)+1);
    strcpy(result, first);
    strcpy(result+strlen(first), second);
    return result;
}
于 2013-03-20T11:56:30.943 に答える