C言語関係掲示板

過去ログ

No728 16進ダンプ

[戻る] [ホームページ]
No.8920

教えてください!!
投稿者---ゆうこ(2003/08/13 16:26:05)


今16進ダンプを作ろうとしているんですが、ぜんぜんわかりません。Cygwinでは、#include "conio.h"って使えないんですか??
そもそもこれって何をしているんでしょうか??
簡単な16進ダンプの作り方教えていただけると幸いです。



No.8922

Re:教えてください!!
投稿者---YuO(2003/08/13 17:22:09)


>今16進ダンプを作ろうとしているんですが、ぜんぜんわかりません。
>Cygwinでは、#include "conio.h"って使えないんですか??

標準のC言語にconio.hなるヘッダファイルは存在しません。
そもそも,conio.hを取り込もうとした理由は何ですか?


>そもそもこれって何をしているんでしょうか??

conio.hなるヘッダファイルをソースファイルに取り込んでいます。


>簡単な16進ダンプの作り方教えていただけると幸いです。

ぜんぜんわからない,という人に作り方を教えることは,
掲示板では不可能だと思います。


No.8929

Re:教えてください!!
投稿者---かずま(2003/08/14 03:10:41)


題名が不適切です。
【掲示板ご利用上の注意】をよく読んでください。

> 簡単な16進ダンプの作り方教えていただけると幸いです。

では、超簡単な16進ダンプを。
#include <stdio.h>

int main(void)
{
    int c;

    while ((c = getchar()) != EOF)
        printf(" %02x", c);
    return 0;
}
でも、標準入力は、バイナリモードでなくテキストモードで
オープンされているので、思ったようにはならないでしょう。

No.8933

Re:教えてください!!
投稿者---aki(2003/08/14 12:56:59)


#include <stdio.h>
#include <ctype.h>

void dump(FILE *in)
{
    char buf[16];  int i, c, n = 0;

    if (!in) return;

    do {
        printf("%.8X:", 16 * n++);
        for (i = 0; i < 16 && (c = fgetc(in)) != EOF; i++)
            printf("%3.2X", c), buf[i] = isprint(c) ? c : '.';
        printf("%*s   %.*s\n", (16 - i) * 3, "", i, buf);
    } while (c != EOF);
}

int main(int argc, char **argv)
{
    if (argv[1]) dump(fopen(argv[1], "rb"));
    return 0;
}