2016-10-16 30 views
0

私はC言語の初心者です。私はchar配列にunsigned shortをどのように格納するのでしょうか?unsigned shortをchar配列に格納するにはどうすればよいですか? C言語

unit16_tはunsigned shortです。以下は私のコードです。

uint16_t combined = 1234; 
char echoPrompt[] = {combined}; 

EDIT:

不明であるために申し訳ありません

私はECHOPROMPTは整数にchar配列と組み合わされたニーズである必要があります。私はchar配列として必要なUART_writeにchar配列としてechPromptを渡しています。

+0

なぜこのようにする必要があるかについての詳細情報を追加する必要があります。短い答えはなぜ短絡の配列を使用しないのですか? – John3136

+0

こんにちはJohn、上記を参照してください –

+0

問題の詳細を教えてください。詳細に応じて少なくとも2つの異なる方法があります。 – GMichael

答えて

2

配列を関数に渡すことはできません。ポインタを渡すことができます。ポインタは配列ではありません。

あなたUART_writeが標準のC/POSIXはwriteの機能のいずれか、fwriteなどのようなものに見える場合は、char型の配列の必要はありません

result = UART_write (..., 
     (char*)&combined, 
     sizeof(combined), ...); 

を必要としています。

1

私が正しく理解していれば、shortの各1バイトと下位1バイトをchar配列に保存します。

まあ、なぜユニオンを使ってみませんか?

typedef struct uint16_s{ 
    char upper; 
    char lower; 
} uint16_s; 

typedef union uint16_u{ 
    uint16_s sBuf; 
    uint16_t tBuf; 
} uint16_u; 

uint16_u combined; 
combined.tBuf = 1234; 
char echoPrompt[] = {combined.sBuf.upper, combined.sBuf.lower}; 
関連する問題