C言語のコンパイル時に表示される以下のエラーの意味を教えて下さい。
また、できれば解決方法も教えて下さい。
「パラメータ '__buffer' は signed char * 型として定義されているので int は渡せない」
このエラーの該当箇所は、以下のsprintf文です。
for(i = 0 ;i < sign; ++i){
sprintf(HEXDATA[i],"%02X",rbuf[i]); ← このステップです
}
なお、HEXDATA、rbuf、i、signは、
char HEXDATA[256];
char rbuf[256];
int i,sign;
と定義しています。
rbufには入力ファイルから読み込んだテキストデータ「0123456」が入っており、
これを1文字ずつ16進数に変換して、順にHEXDATA[1]、HEXDATA[2]、HEXDATA[3]~~~
に格納していきたいのですが、どうしたら良いのでしょうか。
No.4
- 回答日時:
>質問者さん
テキストデータ「0123456」が入っており、
これを1文字ずつ16進数に変換して、順にHEXDATA[1]、HEXDATA[2]、HEXDATA[3]~~~
に格納していきたい
HEXDATA[]に入れたい値を16進数で書いてみてください。
>#3さん
'0'を0x31(ASCIIの場合)という値
'0'は0x30ではないでしょうか。
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]に入れたい。
というのであれば、既に回答付いているとおりです。
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型にたいして暗黙の型変換が起っているのだと思われます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# c言語 int temp = 0; if(isdigit(arr[i])){ temp=arr[i] 2 2022/03/27 01:44
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
nullと""、\\0とEOFの違いにつ...
-
16進数を2文字ずつ配列に格納し...
-
C言語の勉強しています。すみま...
-
構造体→文字列→構造体 をする方法
-
%dなどの違い
-
C言語の課題で困っています;
-
Shift_JIS(16進)を文字に変換す...
-
VBA-DLLの引数受け渡しについて
-
アルファベットの出て来た回数
-
C++で入力した文字列から数字を...
-
数字の入った配列をファイルへ...
-
_tcscpy_s(wcscpy_s)の第二引数...
-
WSH(VBS)でJSONの文字列を読み...
-
VB6.0でのバイナリデータの扱い...
-
c#で他のアプリの文字入力フォ...
-
TCL言語で文字列検索方法を教え...
-
引用符と二重引用符
-
VBAのプログラムで、DIAG = 1# ...
-
C言語 配列の長さの上限
-
関数から配列を返すには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
nullと""、\\0とEOFの違いにつ...
-
C++で入力した文字列から数字を...
-
%dなどの違い
-
C#でstringをポインタとして渡す
-
16進数を2文字ずつ配列に格納し...
-
TCL言語で文字列検索方法を教え...
-
プログラムによく出てくるst...
-
WSH(VBS)でJSONの文字列を読み...
-
_tcscpy_s(wcscpy_s)の第二引数...
-
数字の入った配列をファイルへ...
-
構造体→文字列→構造体 をする方法
-
VB6.0でのバイナリデータの扱い...
-
char型配列の最大要素数
-
[C++]WCHARの1文字目しか表示で...
-
アルファベットをカウント、
-
VBA-DLLの引数受け渡しについて
-
c#で他のアプリの文字入力フォ...
-
C言語の勉強しています。すみま...
-
Shift_JIS(16進)を文字に変換す...
-
バイナリファイル中の日本語文...
おすすめ情報