2011-10-19 15 views
0

にシンボルとして示すIは、プリント値を見るとき、私は、私はtest 200が、いくつかの他の機会に印刷連結値結果はC

#include <stdio.h> 

int main() 
{ 

    char *price_c = "200"; 
    char *s_att = "test "; 

    int satt=strlen(s_att); 
    int price_len = strlen(price_c); 

    int send_attach_len = price_len+satt; 

    size_t length = send_attach_len +2; 
    char *concat = malloc(sizeof(char) *length); 

    snprintf(concat, length, "%s%s%s", s_att, price_c, "\n"); 
    printf("value of concat is %s", concat); 
} 

以下のコードを有しています、私はtest 200 <?>を持っています。は奇妙なシンボルです。何とか新しい行が認識されません。 しかし、この奇妙なシンボルが表示されているすべてではないので、非常に奇妙です。 それはちょうど無作為に来ました。私は使用していますubuntu 10.04

私はこの新しい行の問題を解決するために助けてくれるので、新しい行と奇妙な記号を表示することはできますか?あるいは、上記の値を連結して、新しい行が正しく表示され、奇妙なシンボルが表示されないように、アプローチを変更することはできますか?

+1

正しく動作します。私はあなたの問題がどこか他の場所だと思う。 – xanatos

+0

@ xanatos:はい、正しく動作します。しかし時にはそれは私に200(そして新しい行ではない)の後に別の奇妙なシンボルを表示します。 – heike

+0

@Maheshいいえ、彼は文字列の最後に '\ n'を追加しています。 – xanatos

答えて

0

コードは大丈夫ですが、いくつかのヘッダーがありません。

strlenは、<string.h>であり、mallocは、<stdlib.h>である。

はそれらを含めて、にごmain署名を変更する、あなたのコンパイラの警告(GCC用-Wall)をオンにする:

int main(void) { } 

、実際にそれからint型を返す(またはC99、GCCのためのstd=c99としてコンパイル)、および問題はなくなるはずです。