sprintfを使用してint、stringおよびintを追加しようとしました。C Sprintf()はジャンク文字を追加します
sprintf(str,"%d:%s:%d",count-1,temp_str,start_id);
ここで、start_idの値は常に同じです。 char *であるtemp_strの値は毎回増加します。私はしばらく正しい出力を得てから、私のsprintfはtemp_strとstartidの間に迷惑な文字を印刷し始めます。だから私のstrは腐敗する。
誰でもこの動作を説明できますか?
例えば数11
11に
:1:2:3:1:2:3:1:2:3:1:21:1:3:1:2:3: 2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2: 3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3: 1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2
atカウント8
8:1:2:3:1:2:3:1:2:3:1:21:3:1:2:3:1:2:3:1:2:3: 1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1: 2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2: 3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3: 1:2:3:1:2なぜ、どのように「」文字列に追加され
すべての変数といくつかのコードの定義を投稿してください。たぶん 'str'は十分に高くないかもしれません。 –
sprintfを使用している時間の少なくとも99%は、snprintfを実際に使用しているはずです。 –