ショッピングモール  掲示板ランキング


【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は謹んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板1こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    使用可能タグ一覧

No.2697

16進(Hexデータ)データの入力とファイルへ出力
投稿者---こーじ(2004/09/20 09:32:44)


こんにちわ、FEDORA上でバイナリエディタを作ろうと思ってます

キーボードから入力したデータをHexデータとしファイルへ出力させたい(1をタイプしたらH’01として出力させたい)のですが1バイト余分(00)出力されます。入力バイト数だけ出力させるにはどうしたらいいのでしょうか。
------結果-----
[koji]$ ./bin test
Type binary data.
123
23
01
[koji]$ od -x test
0000000 0123
0000002
-------ソース-----
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]){

FILE *fp;
unsigned char buf[300];
int i, n;

printf("Type binary data.\n");
scanf("%x",buf);
n = strlen(buf);

fp = fopen(argv[1],"wb");
if(fp == NULL){
printf("can not open '%s'\n",argv[1]);
return 0;
}
for(i=0; i < n; i++){
printf("%02x \n",buf[i]);
// fprintf(fp,"%x",buf[i]);
fputc(buf[i],fp);
}

fclose(fp);
return 0;
}


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:16進(Hexデータ)データの入力とファイルへ出力 2698 かずま 2004/09/20 12:12:59


No.2698

Re:16進(Hexデータ)データの入力とファイルへ出力
投稿者---かずま(2004/09/20 12:12:59)


プログラムが左詰めになっているのをおかしいとは思いませんか?

私は、【掲示板ご利用上の注意】に従わない質問には回答しないことにして
いるのですが、ずっと以前に RedHat Linux 7.2 をインストールしたまま
ほうっていた PC に一昨日 Fedora を入れてみたので、特別に回答をして
みましょう。

> キーボードから入力したデータをHexデータとしファイルへ出力させたい(1
> をタイプしたらH’01として出力させたい)のですが1バイト余分(00)出
> 力されます。入力バイト数だけ出力させるにはどうしたらいいのでしょうか。
#include <stdio.h>
                                                                                
int main(int argc, char *argv[])
{
    FILE *fp;  int data;
                                                                                
    if (argc != 2) return 1;
    fp = fopen(argv[1], "wb");
    if (fp == NULL) {
        printf("cannot open '%s'\n", argv[1]);
        return 0;
    }
    printf("Type binary data.\n");
    while (scanf("%2x", &data) == 1) {
        printf("%02x\n", data);
        fputc(data, fp);
    }
    fclose(fp);
    return 0;
}
                                                                                
[tmp]$ ./a.out test
Type binary data.
1234abcd.
12
34
ab
cd
[tmp]$ od -Ax -tx1 test
000000 12 34 ab cd
000004
[tmp]$



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    使用可能タグ一覧




掲示板提供:Real Integrity