SDKでプログラムを書いています。
読み込んだ数値を2次の配列にいれたのですが
それをWINDOW画面に出力することができません。
sprintfやwsprintfやMessageBoxを
使ってみたのですが
error C2664: 'sprintf' : 1 番目の引数を 'char [5][5]' から 'char *' に変換できません。
などのエラーが出てしまいます。
どうすればよいでしょうか?
char [5][5]を,どのように出力したいのですか?
それによって方法は異なります。
例えば,
void out (char foo[][5], int count)
{
char buffer[256] = "";
char * pend = buffer;
int i;
for (i = 0; i < count; ++i) {
int j;
for (j = 0; j < sizeof(foo[0]) / sizeof(foo[0][0]); ++j) {
char temp_buf[8];
sprintf(temp_buf, "%i ", foo[i][j]);
strcpy(pend, temp_buf);
pend += strlen(temp_buf);
}
strcpy(pend, "\r\n");
pend += 2;
}
MessageBox(NULL, buffer, NULL, MB_OK);
}
のように書けば,5*5の格子状に出力されます。
お返事ありがとうございます。
自分はこのスレより以前のスレでデータの取り込み方を
質問させていただいたものです。
自分はただファイルから読み込まれたデータが
ちゃんと配列に取り込まれているかを
調べたかったので出力しようと思いました。
だからどのような出力方法でも構いません。
それでYuOさんのコードを元に自分なりに
作ってみたのですが、
格子状に出た数字はおかしな数字になってしまいましたし、
「エラー」とバーの所に書かれていました。
おかしなところを指摘していただけませんか?
void OnCreate(HWND hWnd)
{
HANDLE hFile = NULL;
DWORD dwRead;
char buffer[256];
char * pend = buffer;
hFile = CreateFile("date.dat", GENERIC_READ | GENERIC_WRITE, 0,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(hFile == INVALID_HANDLE_VALUE){
MessageBox(hWnd, "ファイルがオープンできません", "ファイルのオープンの失敗", MB_OK);
}
// データの読み出し
for(int i = 0; i < ROW; i++)
{
ReadFile(hFile, buffer, sizeof(buffer), &dwRead, NULL);
for(int j = 0; j < COL; j++)
{
bArray[i][j] = buffer[j];
char temp_buf[8];
sprintf(temp_buf, "%i ", (char(bArray[i][j])));
strcpy(pend, temp_buf);
pend += strlen(temp_buf);
}
strcpy(pend, "\r\n");
pend += 2;
}
MessageBox(NULL, buffer, NULL, MB_OK);
CloseHandle(hFile);
}
> 自分はこのスレより以前のスレでデータの取り込み方を
> 質問させていただいたものです。
前回は前回,今回は今回です。
だいたい,回答するときに一々質問者の名前までは見ていませんよ。
#見てわかるのは普段回答している人であることが多いですし。
> 格子状に出た数字はおかしな数字になってしまいましたし、
> 「エラー」とバーの所に書かれていました。
どのようなデータを読み込ませて,どのような出力があったのですか?
読み込んだデータは正しかったのですか?
VC++のIDEを使えば,読み込んだデータの検証くらい簡単にできると思いますが。
#VC++のデバッガは優秀だと思いますよ。コンパイラは色んな点でダメダメですけどね。
> おかしなところを指摘していただけませんか?
> ReadFile(hFile, buffer, sizeof(buffer), &dwRead, NULL);
> for(int j = 0; j < COL; j++)
dwReadの検証やReadFileの戻り値の検証をやっていない。
sizeof(buffer)を渡しているのが本当によいのかも疑問。
ツイート | ![]() |