![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
お世話になります。
件名の内容で、参考になるサイトや手法などをご教授願います。
【件名】C言語で16進数をテキスト出力したい。
【環境】OS:WindowsXPsp2 コンパイラ:borlandC
【詳細】
現在、C言語で以下の手順で処理を行うプログラムを作成しております。
手順1:ASCIIコードで記載されたテキストをUTF8コードに変換
手順2:UTF8に変換された1行目の文字列を16進数コードフォーマットをファイル名にして保存
手順2の16進コードフォーマットのファイル名にして保存する作業で
fprintf(buff,"%x",UF8); //"buff"保存ファイル名、"UTF8"1行目文字列
を用いて行えるかと思ったのですが、どうやら直接16進数の名称を吐き出すことが不可能なようで、どのように行ったらいいか皆目検討がついておりません。
そこで大変恐縮ですが、参考になる手法や、情報がありますサイト等をお教え頂けると幸甚です。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
UTF8がchar配列だとしてですが、
for( i=0 ; 0x00!=utf8[i] ; i++ ) {
fprintf(buff,"%02x",UTF8[i]);
}
ですかね。適当なところで改行入れないと見づらいとは思いますが。
No.2
- 回答日時:
何をするのかがいまいち不明瞭なのですが。
まず、UTF-8はASCIIコードを含む形で定義されていて、ASCIIしか含まれない場合、ASCIIと区別がつかない全く同じコードになったと思います。(先頭の識別用バイト列、いわゆるBOMをのぞく)
次に、手順2の内容は、入力の1行目を16進表現した文字列をファイル名に使いたい用に見えます。(ファイルの中身は入力の全体がUTF-8変換されたもの)
しかし、示されたコードはfprintfであり、ファイル自体への出力に見えます。また、buffはFILE*(ファイルポインタ)のはずですが、ファイル名となっています。
質問の要点は、文字列の各バイトを16進表現した文字列を作成する方法でよいでしょうか。
この場合、もっとも移植性の高いコードは
for (i = 0; UF8[i] != '\0'; i++)
sprintf(&buff[i * ((CHAR_BIT + 3) / 4)], "%0*x", (CHAR_BIT + 3) / 4, UF8[i]);
です。なお、このコードは出力先のバッファが変換対象の文字列に対して十分に大きいこと(長さ×16進表現の桁数+1)を期待しています。
ちなみに、((CHAR_BIT + 3) / 4)はCは規格上charのビット幅が決まっていないので必要になります。
もしもファイル自体に出力したいのであれば#1の方のを参考にしてください。
ご回答有難う御座います。
説明が不足し余計な混乱を招いてしまって申し訳ありません。
>示されたコードはfprintfであり、ファイル自体への出力に見えます。
ご指摘いただいたようにbuffはファイルポインタの名称として用いております。
今回16進コードに変換したファイル名を設けるにあたり、別途書き込みファイルを用意し、その中に16進コードに変換したファイル名を格納。
テキストに格納された文字列をもとに新たに書き込みファイルを生成し、
必要なデータを格納するという、非常に回りくどい手順を踏んでおります。
このような説明不足の質問に対し丁寧に回答頂き感謝致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- その他(Microsoft Office) ワードのマクロについて教えてください。 1 2023/01/21 16:01
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/06/01 14:45
- Excel(エクセル) エクセルVBA、間違っているコード内容を正して頂けませんか? エクセルワークシートに納品書を作ったの 2 2023/08/02 21:13
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
fwprintf()について
-
ストリーム 意味について。
-
Acccess レポートをグループ別...
-
VC++でUTF-8のファイルを出力し...
-
ファイル出力の場所を指定
-
コマンド(例えばls)の出力結果...
-
(VBA)書式が変更されてしまい...
-
BitBltについて。
-
テキストの各行に行番号をつけ...
-
Wordマクロで指定したフォルダ...
-
C言語での縦方向のファイル出力...
-
VC++での外部ファイル(batファ...
-
gccによって、BOM付きのUTF-8で...
-
ファイルの文字コードをUTF-8に...
-
できるだけ簡単なプログラムを...
-
C言語で・・・・。
-
VB.NETでExcelファイルを出力す...
-
fflush()、setbuf()について
-
Base64でエンコードした後の文...
-
C++/CLIにて、System.String^型...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Paiza Cloudです。 どうやれば...
-
Paiza Cloudです。学籍番号と氏...
-
Acccess レポートをグループ別...
-
ファイル出力の場所を指定
-
コマンド(例えばls)の出力結果...
-
VC++でUTF-8のファイルを出力し...
-
テキストファイルに改行コード...
-
シェルコマンドの 2>&1 とはど...
-
VBA でメモ帳へ保存する際の保...
-
ファイル形式またはファイル拡...
-
fortranのtxtファイル出力書式...
-
CSV形式に変換
-
printfだと出力されるのにfprin...
-
C++ fprintf_sの使い方がわからん
-
c言語の質問です。 ランダムに4...
-
Wordマクロで指定したフォルダ...
-
C++/CLIにて、System.String^型...
-
pcap形式データをテキストへ抽出
-
二次元配列をクリップボードに...
-
raw形式からbmp形式への書き込...
おすすめ情報