2016-05-11 6 views
2

は今、私のCの知識を忘れたCでのchar *に2つの整数を連結します。は、次の操作を行う方法を考え出す本当に苦労して、

int a = 5; //getting value from a function 
int b = 1; //from a function 

私が持っていたいのです:

char * returnstring = "5:1"; //want to return this 

私は以下を試しましたが、動作しません。

char astr[5], bstr[5]; 
    sprintf(astr, "%d", a); 
    sprintf(bstr, "%d", b); 

    char finstr[100]; //final string 
    strcpy(finstr, astr); 
    strcpy(finstr, ":"); 
    strcpy(finstr, bstr); 

    printf ("%s", finstr); 
+0

なぜdownvotedですか?説明する気がする?ここでCの基本的な質問をしている初心者だけ? – KillBill

+0

NMDV: 'bstr [5]; sprintf(bstr、 "%d"、b);は確かにオーバーランの影響を受けやすいです。 – chux

+0

なぜDVであるかについては、「それは動作しません」 DVマグネットです。代わりに何が起こったのか、そして何が期待されたのかを説明してくださいそれが現れても、コンパイルと実行を試みていなくてもHWのように見えます。 – chux

答えて

6

あなたは1 sprintfでそれを単に行うことができます。

strcpy(finstr,astr); 
strcat(finstr, ":"); 
strcat(finstr, bstr); 

char str[100]; 
sprintf(str, "%d:%d", a, b); 
3

変更

strcpy(finstr,astr); 
strcpy(finstr, ":"); 
strcpy(finstr, bstr); 

あなたが連続する各呼び出しで結果の文字列を上書きしています。代わりにstrcatを使用して、文字列の末尾に連結する必要があります。これは、単一のsprintfコールで簡単に実行できますが。

関連する問題