char配列を含む構造体でmemcpyが失敗する

エコーリー
struct Frame_t
{
    uint16_t src_id;
    uint16_t dst_id;
    unsigned char num;
    uint8_t is_seq;
    char data[48];
};
typedef struct Frame_t Frame;
char *convert_frame_to_char(Frame *frame)
{
    char *char_buffer = (char *)malloc(64);
    memset(char_buffer,
           0,
           64);
    memcpy(char_buffer,
           frame,
           64);
    return char_buffer;
}

Frame *convert_char_to_frame(char *char_buf)
{
    Frame *frame = (Frame *)malloc(sizeof(Frame));
    memset(frame->data,
           0,
           sizeof(char) * sizeof(frame->data));
    memcpy(frame,
           char_buf,
           sizeof(char) * sizeof(frame));
    return frame;
}

私がそうするなら、それらの効用関数で与えられます

            Frame *outgoing_frame = (Frame *)malloc(sizeof(Frame));
//   outgoing_cmd->message  contains "I love you"
            strcpy(outgoing_frame->data, outgoing_cmd->message);
            outgoing_frame->src_id = outgoing_cmd->src_id; // 0
            outgoing_frame->dst_id = outgoing_cmd->dst_id; // 1
            outgoing_frame->num = 100;
            outgoing_frame->is_seq = 1;
            //Convert the message to the outgoing_charbuf
            char *outgoing_charbuf = convert_frame_to_char(outgoing_frame);
            // Convert back
            Frame *test = convert_char_to_frame(outgoing_charbuf);
            // print test->data is "I "

test srcは0、test dstは1、dataは「I」、test numはd、testis_seqは1です。

では、なぜデータが2文字しかないのでしょうか。これをロスレスで行う正しい方法は何ですか?

ありがとうございました!

キランビラダー
memcpy(frame,
       char_buf,
       sizeof(char) * sizeof(frame));

する必要があります

memcpy(frame,
       char_buf,
       sizeof(Frame));

size(frame)ポインタのサイズです。したがってsize of pointer、配列からバイトをコピーするだけです

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Cで構造体の配列を含む構造体を作成するのに問題がある

マップ[文字列]文字列の非整列化を含むGolang yaml.v2構造体が失敗する

char *を含む構造体の配列を空にします

char配列の配列を含む構造体

配列を含む構造体を渡すと、配列名の値が変わるのはなぜですか?

memcpyを使用して構造体をchar配列に変換する

pinvoke:LPWSTRを含む構造体の配列を解放する方法

new []を含む構造体の配列は、その構造体にコンストラクターがある場合は機能しないようです。

char配列を含むC ++構造体は、異常な方法でゼロに初期化されます

配列要素を含む構造体の配列を初期化する

2D配列を含む構造体の配列を操作する方法

構造体を含むgolang型配列

配列を含むctypes構造体

配列を含む構造体に配列をreinterpret_castするのは安全ですか?

配列を含む構造体の配列であるSSBOのメモリを整列しますか?

コードが構造体の配列に対して機能するのに、この構造体の配列を含む構造体では機能しない理由がわかりませんか?

intの配列を含む構造体を構造体の配列に正しく割り当てるにはどうすればよいですか?

TwinCatからC#までの構造体の配列を含む構造体を読み取る方法

構造体の配列を含むネストされたgolang構造体を設定する方法

構造体の配列の内容を移動するmemcpy()

構造体を割り当てても、構造体内のchar配列がnullになるのはなぜですか?

Cで配列のみを含む構造体を宣言するのはなぜですか?

配列を含む構造体へのポインタを解放する

構造体の配列の割り当てに失敗する

配列を含む構造体を返す

配列を含む構造体を初期化しています

配列を含む構造体にはfree()を使用します

Rustで配列を含む構造体をデフォルトで初期化する方法は?

Python:structモジュールで配列を含む構造体を処理する

TOP 一覧

  1. 1

    PictureBoxで画像のブレンドを無効にする

  2. 2

    レスポンシブウェブサイトの一番下にスティッキーなナビゲーションバーを作成するのに問題がある

  3. 3

    Rパッケージ「AppliedPredictiveModeling」のインストール中にエラーが発生しました

  4. 4

    Chromeウェブアプリのウェブビューの高さの問題

  5. 5

    HTTPヘッダー 'SOAPAction'の値はサーバーによって認識されませんでした

  6. 6

    Pythonを使用して、リストからデータを読み取り、特定の値をElasticsearchにインデックス付けするにはどうすればよいですか?

  7. 7

    C ++でのcURLとマルチスレッドの使用

  8. 8

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  9. 9

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  10. 10

    STSでループプロセス「クラスパス通知の送信」のループを停止する方法

  11. 11

    Spring @ModelAttributeモデルフィールドマッピング

  12. 12

    Python / SciPyのピーク検出アルゴリズム

  13. 13

    Ansibleで複数行のシェルスクリプトを実行する方法

  14. 14

    テキストフィールドの値に基づいて UIslider を移動します

  15. 15

    tf.nn_conv2dとtf.nn.depthwise_conv2dの違い

  16. 16

    ZScalerと証明書の問題により、Dockerを使用できません

  17. 17

    MLでのデータ前処理の背後にある直感

  18. 18

    Postmanを使用してファイル付きの(ネストされた)jsonオブジェクトを送信する

  19. 19

    java.lang.NoClassDefFoundError:com / sun / istack / tools / DefaultAuthenticator $ Receiver

  20. 20

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  21. 21

    BLOBストレージからデータを読み取り、Azure関数アプリを使用してデータにアクセスする方法

ホットタグ

アーカイブ