1

文字列を分割し、分割した時点で最初の文字列に別の文字列を挿入しようとしています。

例:

int main(int argc, char **argv)
{
    char src1[4]= "foo";
    char src2[4]= "bar";

}

src1asfooinsertを分割してsrc2、単一の string を取得したいと思いますfbaroo。Cでそれを行う最良の方法は何ですか?

を使用してみsnprintfましたが、同じことを達成できません。コードは次のとおりです。

snprintf(result, 1,"%s",src1[0]);
snprintf(result, strlen(src2), "%s",src2);
snprintf(result, strlen(src1)-1, "%s", **how do i get remaining characters**);

もちろん、最初に分割して後で結合することもできますが、ライブラリ関数を使用するなど、より良い解決策があるかどうかを見つけようとしていますか?

4

3 に答える 3

1

コード内のsnprintfs はすべて、最初からバッファをすべて上書きします。

1回の呼び出しでそれを行う1つの方法を次に示します

snprintf(result, sizeof(result), "%c%s%s", src1[0], src2, &src1[1]);

&src1[1]、「残りの文字列」を取得する方法を示しています。

于 2013-01-22T01:34:51.347 に答える
1

まず、十分なスペースを持つ新しい文字列が必要です:

char finalString[7];

src1次に、最初の X 文字を新しい文字列にコピーする必要があります。これは、 memcpyまたはstcpyで実現できます。後者を使用します。したがって、最初の文字のみをコピーしたい場合は、次のsrc1ようにする必要があります。

strcpy(finalString, src1, 1);

strcatsrc2を使用して文字列をコピーするだけです

strcat(finalString, src2);

src1最初のコピーされていない文字から始めて、残りの文字列を追加します。

strcat(finalString, &src1[1]);
于 2013-01-22T01:37:28.047 に答える
1

私は一緒に行きsprintf()ます:

# include <stdio.h>

int main(int argc, char **argv) {

    char src1[4] = "foo";
    char src2[4] = "bar";
    char result[8] = {'\0'};

    sprintf(result, "%c%s%s", src1[0], src2, &src1[1]);
    printf("Result: [%s];\n", result);

}

出力:

$ ./a.out 
Result: [fbaroo];
于 2013-01-22T01:39:33.387 に答える