配列を出力するには?


スシッチ  2003-01-07 16:31:31  No: 50902  IP: [192.*.*.*]

SDKでプログラムを書いています。
読み込んだ数値を2次の配列にいれたのですが
それをWINDOW画面に出力することができません。

sprintfやwsprintfやMessageBoxを
使ってみたのですが
error C2664: 'sprintf' : 1 番目の引数を 'char [5][5]' から 'char *' に変換できません。 
などのエラーが出てしまいます。
どうすればよいでしょうか?

編集 削除
YuO  2003-01-07 21:54:00  No: 50903  IP: [192.*.*.*]

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の格子状に出力されます。

編集 削除
スシッチ  2003-01-11 15:30:46  No: 50904  IP: [192.*.*.*]

お返事ありがとうございます。

自分はこのスレより以前のスレでデータの取り込み方を
質問させていただいたものです。

自分はただファイルから読み込まれたデータが
ちゃんと配列に取り込まれているかを
調べたかったので出力しようと思いました。
だからどのような出力方法でも構いません。


それで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);
}

編集 削除
YuO  2003-01-11 16:06:34  No: 50905  IP: [192.*.*.*]

> 自分はこのスレより以前のスレでデータの取り込み方を
> 質問させていただいたものです。

前回は前回,今回は今回です。
だいたい,回答するときに一々質問者の名前までは見ていませんよ。
#見てわかるのは普段回答している人であることが多いですし。


> 格子状に出た数字はおかしな数字になってしまいましたし、
> 「エラー」とバーの所に書かれていました。

どのようなデータを読み込ませて,どのような出力があったのですか?
読み込んだデータは正しかったのですか?
VC++のIDEを使えば,読み込んだデータの検証くらい簡単にできると思いますが。
#VC++のデバッガは優秀だと思いますよ。コンパイラは色んな点でダメダメですけどね。


> おかしなところを指摘していただけませんか?
>         ReadFile(hFile, buffer, sizeof(buffer), &dwRead, NULL);
>         for(int j = 0; j < COL; j++)

dwReadの検証やReadFileの戻り値の検証をやっていない。
sizeof(buffer)を渡しているのが本当によいのかも疑問。

編集 削除