• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語のコンパイル時に表示される以下のエラーの意味を教えて下さい。)

C言語コンパイル時に表示されるエラーの意味と解決方法

このQ&Aのポイント
  • C言語のコンパイル時に表示されるエラー「パラメータ '__buffer' は signed char * 型として定義されているので int は渡せない」の意味を教えてください。
  • 該当箇所は、sprintf文であり、変数が正しく型定義されていないことが原因です。
  • 解決方法としては、パラメータの型を合わせるために、sprintf関数の引数をsigned char * 型に変更する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.5

>'0'は0x30ではないでしょうか。 フォローありがとうございます。 アホな間違いしていました。 あとは、質問者さんの反応待ち…でしょうか。

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • asuncion
  • ベストアンサー率33% (2127/6290)
回答No.4

>質問者さん テキストデータ「0123456」が入っており、 これを1文字ずつ16進数に変換して、順にHEXDATA[1]、HEXDATA[2]、HEXDATA[3]~~~ に格納していきたい HEXDATA[]に入れたい値を16進数で書いてみてください。 >#3さん '0'を0x31(ASCIIの場合)という値 '0'は0x30ではないでしょうか。

すると、全ての回答が全文表示されます。
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.3

たぶん、No.2さんの回答であっていると思いますが…… >rbufには入力ファイルから読み込んだテキストデータ「0123456」が入っており、 >これを1文字ずつ16進数に変換して、順にHEXDATA[1]、HEXDATA[2]、HEXDATA[3]~~~ '0'を0x31(ASCIIの場合)という値でHEXDATA[1]に入れたい。 というのであればsprintf()自体不要です。 HEXDATA[1] = rbuf[0]; という感じでループしていくだけです。 # HEXDATA[]への代入が「0から始まっていない」のは意図したモノかどうか不明ですが。 # コード見る限りは HEXDATA[0] = rbuf[0] っぽいですが。 '0'を"31"(ASCIIの場合)という「文字列として」HEXDATA[1]に入れたい。 というのであれば、既に回答付いているとおりです。

すると、全ての回答が全文表示されます。
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

char HEXDATA[256] ; で宣言したら HEXDATA[1],HEXDATA[2]... は char型です。 文字列にはなりません。文字(をあらわせるだけの大きさの整数)になります。 sprintfの第1引数には出力先の文字列を必要とします。 char型では一致しません。 > これを1文字ずつ16進数に変換して、順にHEXDATA[1]、HEXDATA[2]、HEXDATA[3]~~~ ということをするなら、文字列の配列として用意しないとです。 たとえば char HEXDATA[256][3] ; など。 「3」は文字列の長さ(2)+1です。 なお、「intは渡せない」と出るのは、char型にたいして暗黙の型変換が起っているのだと思われます。

すると、全ての回答が全文表示されます。
  • wolf03
  • ベストアンサー率22% (241/1086)
回答No.1

intで渡せと言われるならキャストすればいい 後、HEXDATAの宣言も間違っている

すると、全ての回答が全文表示されます。

関連するQ&A