4

私はstrcat()次のような2つの文字列を接続するために使用します:

    #include <string.h>
    #include <stdio.h>

    int main(int argc, char *args[])
    {
       char *str1; // "456"
       char *str2; // "123"

       strcat(str1,str2);
       printf("%s",str1);
    }

私は得る:

456123  

しかし、次のような最初の文字列の先頭に2番目の文字列が必要です:

123456

どうすればできますか?

4

5 に答える 5

7

strcat(str2,str1);して、パラメータを切り替えます。ただし、結果の文字列は で取得されます。これは、プログラムでさらに使用したい場合にstr2設定できます。str1str1

ただし、 で使用可能なメモリ スペースには適切に注意する必要がありますstr2


変更したい場合str1は、これを実行してください

char *tmp = strdup(str1);

strcpy(str1, str2); //Put str2 or anyother string that you want at the begining
strcat(str1, tmp);  //concatenate previous str1

...
free(tmp); //free the memory
于 2013-05-26T13:30:17.023 に答える
0

からの逐語man strcat:

char *strcat(char *dest, const char *src);

説明

strcat() 関数は、src 文字列を dest 文字列に追加し、dest の最後にヌル バイト ('\0') を上書きしてから、終端のヌル バイトを追加します。文字列はオーバーラップできず、dest 文字列には結果を格納するのに十分なスペースが必要です。

プログラマーとして、ポインタが参照先からコピーされる追加の schar * destを保持するのに十分な有効なメモリを参照していることを確認する必要があります。charchar* src

プレフィックスstr1を付けて成功させるには、次のようにstr2宣言します。

char str2[3 + 1] = "123"; // three for "123" plus 1 for the terminating 0
char str1[2 + 3 + 1] = "46"; // 2 for "46" plus 3 for "123" plus 1 for the terminating zero

char2 つの配列を実際に連結するには、次のようにします。

strcat(str1, str2);
于 2013-05-26T13:42:03.880 に答える
0

strcpyの代わりに使用する必要がありますstrcat

于 2013-05-26T13:29:17.820 に答える