掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.29513

文字を16進数へ変換 16進数を文字へ変換
投稿者---mak(2007/01/20 12:06:55)


Word.txtの内容(最後改行無し)
aabbcc

Hex.txtの内容(Word.txt変換後の結果 最後改行無し)
61626364656667

Word.txt (Hex.txt変換後の結果 最後改行無し)



#include<stdio.h>
#include<stdlib.h>

int main(void)
{
    int a;
    char fname[20], ss[80];
    FILE *fr, *fw;

    printf("Reading file name=Word.txt\n");//   gets(fname);


    if((fr=fopen("Word.txt","r"))==NULL)    {
        puts("Reading file is not found.");
        exit(1);
    }
    if((fw=fopen("Hex.txt","w"))==NULL) {
        puts("Writing file is not found.");
        exit(2);
    }

    while((a=fgetc(fr))!=EOF)   {
        fprintf(fw, "%x", a);
    }
    fclose(fr);
    fclose(fw);

    printf("Reading file name=Hex.txt\n");//    gets(fname);


    if((fr=fopen("Hex.txt","r"))==NULL) {
        puts("Reading file is not found.");
        exit(1);
    }
    if((fw=fopen("Word2.txt","w"))==NULL)   {
        puts("Writing file is not found.");
        exit(2);
    }

    while(fgets(ss,2,fr)!=NULL) {
        a = strtol(ss,NULL,16);
        fprintf(fw, "%c", a);
    }
    fclose(fr);
    fclose(fw);

    return 0;
}


Word2.txtとWord.txtが同じ内容になるはずなんですけどなりません
どこがおかしいのか、又どこをどう変更したらいいのか教えてください


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> 環境忘れました スイマセン 29514 mak 2007/01/20 12:15:15
<子記事> Re:文字を16進数へ変換 16進数を文字へ変換 29515 YuO 2007/01/20 12:32:47


No.29514

環境忘れました スイマセン
投稿者---mak(2007/01/20 12:15:15)


OS:WindowsXP Home Edition Ver 2002 SP2
コンパイラ:Borland C++ 5.5.1
です

よろしくおねがいします


この投稿にコメントする

削除パスワード

No.29515

Re:文字を16進数へ変換 16進数を文字へ変換
投稿者---YuO(2007/01/20 12:32:47)


>Word2.txtとWord.txtが同じ内容になるはずなんですけどなりません
>どこがおかしいのか、又どこをどう変更したらいいのか教えてください

fgetsの使い方が間違っています。
    while(fgets(ss,2,fr)!=NULL) {

これでは,ssには1文字しか読み込まれません。
fgetsには,末尾の\0も含めたサイズを渡しますから,第二引数は3にする必要があります。
参考) 17-2. ファイル入出力関数 (3) fgets()



この投稿にコメントする

削除パスワード

No.29516

Re:文字を16進数へ変換 16進数を文字へ変換
投稿者---mak(2007/01/20 12:43:35)


さっそくのお返事ありがとうございます
リンクまで貼っていただいて感謝しています

無事半角英数の操作できました

今度は全角文字に対応できるようにしてみます
その時につまずいたら、また質問させていただくかもしれませんが
よろしくおねがいします


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧