文字列の最後に文字を追加する方法

  I have a file copy program that takes from one file and pastes in another file pointer. But, instead of getting targetname from user input i'd like to just add a '1' at the end of the input filename and save. So, I tried something like this...

       .... header & inits ....
       fp=fopen(argv[1],"r");
       fq=fopen(argv[1].'1',"w");
       .... file copy code ....

うん、それはばかげているようだが、私は初心者であり、助けが必要で、すぐに対応する必要があります。ありがとう

P.S.純粋なCでそれをしたいと思います。ドット演算子はC ++で動くことができると信じています。

もう1つ、私はすでにstrcat関数を認識しています..もし私がそれを使用すると、配列のサイズを定義する必要があります...うーん。 fopen(argv [1] + "extra"、 "w")のような方法はありません

3
演算子は、CやC ++の文字列を連結しません。構造体インスタンスなどのメンバーアクセス用です。あなたがしようとしているのは、文字列を連結/追加することです。ここをクリックしてください: stackoverflow.com/questions/308695/c-文字列連結
追加された 著者 wkl,

5 答え

#include 
#include 
#include 

char* stradd(const char* a, const char* b){
    size_t len = strlen(a) + strlen(b);
    char *ret = (char*)malloc(len * sizeof(char) + 1);
    *ret = '\0';
    return strcat(strcat(ret, a) ,b);
}

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

    char *str = stradd(argv[1], "extra");

    printf("%s\n", str);

    free(str);

    return 0;
}
5
追加された
ありがとう!これは私の問題を解決した:D
追加された 著者 Saifur Rahman Mohsin,

strcat をご覧ください:

例:

#include 
char alpha[14] = "something";
strcat(alpha, " bla");//"something bla"
printf("%s\n", alpha);
3
追加された
あなたは本当に正しいです。 :)
追加された 著者 Morten Kristensen,
ベータ版の使用は余計です。 strcatは本質的にalphaによって残された領域に "bla"を置きます。次にβ= alphaに設定されます。 before:* alphaは "something"です。* alphaは "somethingbla"、betaはalphaです。
追加された 著者 boboquack,

In C to concatenate a string use strcat(str2, str1)

strcat(argv[1],"1") will concatenate the strings. Also, single quotes generate literal characters while double quotes generate literal strings. The difference is the null terminator.

3
追加された
...しかし、この質問はC ++とタグ付けされていません。
追加された 著者 Jon,
+オーバーロードされた文字列の場合のみ。これをcharにするとポインタが追加されます。
追加された 著者 Pubby,

ドットを使用しても機能しません。

あなたが探している機能は、 strcat と呼ばれています。 。

1
追加された

残念ながら。 C ++では動作しません。

やや面白くて効果的な方法は、以下のことを行うことです。

int tempLen=strlen(argv[1])+2;
char* newName=(char*)malloc(tempLen*sizeof(char));
strcpy(newName,argv[1]);
strcat(newName,"1");
1
追加された