2012-02-13 23 views
2

2つのconst char *文字列を連結しようとしています。 strcatはrestrict * charを予期していますか?

私はstrcat(a,b)のような文を持って

は、私は警告 expected ‘char * restrict’ but argument is of type ‘const char *’

警告を生成しませんSTRCATを呼び出す方法がありますを取得しますか? ありがとう!

答えて

7

strcat()は、第1オペランドを変更します。したがって、constにすることはできません。しかし、あなたはそれをconst char*に渡しました。

strcat()を2つのconst *char文字列に使用することはできません。

+0

大変ありがとうございます。それはいくつかの醜い記述につながりましたが、 'char * c = strcat(a、b);というよりもうまく動作します。 '私は' char * c = strcat(strcat(c、a)、b); '私は既にmallocされていることを前提としています。 – user974703

+0

@ user974703: 'malloc' *と*は、' malloc'があなたのためにそれをしないので、 'c'が指すメモリをゼロに設定することをお勧めします。あるいは 'strcat(strcpy(c、a)、b);'を使ってください。あるいは、 'strcat'はあまり効率的ではないので、' sprintf(c、 "%s%s"、a、b); ' –

関連する問題