0

私は以下のコードを持っています。001の最初の3文字( )をpacket_received、値を1つ増やして(002 )変更したいと思います。ただし、コードを実行すると、次の出力が得られます。

Hop_network = 001 
new Hop_network = 2 
packet_received = 2 

私が見たいのは:

packet_received = 002456

どうすればいいですか?最初の文字が0でない場合、コードは正常に機能し、受信メッセージは常に0で始まる必要はありません。回答ありがとうございます。

int main(int argc,char *argv[]){
    char Hop_network[4];
    char packet_received[]= "001456";
    int Hop_increaser;

    Hop_network[0] = packet_received[0];
    Hop_network[1] = packet_received[1];
    Hop_network[2] = packet_received[2];
    Hop_network[3] = '\0';
    printf("Hop_network = %s\n", Hop_network);

    Hop_increaser = atoi(Hop_network);
    Hop_increaser = Hop_increaser + 1;
    sprintf(Hop_network, "%d", Hop_increaser);
    printf("new Hop_network = %s\n", Hop_network);

    packet_received[0] = Hop_network[0];
    packet_received[1] = Hop_network[1];
    packet_received[2] = Hop_network[2];
    printf("packet_received = %s\n", packet_received);
    return 0;
}
4

1 に答える 1

3

幅指定子を使用してsprintfを実行し、数値を左揃えにすることができます。

sprintf(Hop_network, "%03d", Hop_increaser);

これは、「幅3にゼロで左揃え」を意味します。

すべてのフォーマット指定子のドキュメントはここにあります:http ://www.cplusplus.com/reference/clibrary/cstdio/sprintf/

于 2012-05-20T08:23:20.433 に答える