例題では、4095 = 0xFFF(16進数)のように 0 から 9 の文字列で表現できない部分はアルファベット A から Z で表現していますので、基数の最大値は 36 となります。
実行結果
結果を文字列として取得する例
例題では、4095 = 0xFFF(16進数)のように 0 から 9 の文字列で表現できない部分はアルファベット A から Z で表現していますので、基数の最大値は 36 となります。
実行結果
結果を文字列として取得する例
最大/最小値を計算する際、データを読み取る度に値を比較し、比較した値が大きい/小さい場合に値を格納する変数(maxv/minv)が必要となりますが、この変数の初期化には注意が必要です。
読み取るデータの全ての値より大きい/小さい場合には、正しく最大値/最小値が計算されませんので、想定されるデータの値より大きい/小さい値にて初期化する必要があります。
例題では、変数タイプに合わせた最大値/最小値(float.h: DBL_MAX)にて初期化を行なっています。
また、データを比較する際、(a < minv) や (a > maxv) のように直接値を計算すると、ただしく大小の比較が行われない場合があります。
そこで、下記のように差分値が 0 より大きいか、小さいかを調べることにより改善を図っています。
実行結果
関数ポインタ(int (*func_p)(char **, int *);)により、文字列を入力する関数、出力する関数を交互に呼び出し、文字列の入出力を行なっています。
実行結果
メモリにファイルの内容をマッピングする際には、仮想メモリのページサイズ毎にマップされるので、出力されるファイルのサイズもページサイズの整数倍に合わせています(今回の例では、ページサイズは 4kByte)。
以下の例では、
MapFile が存在しない場合に実行: ページサイズの整数倍に合わせたサイズでファイルを作成しデータの出力という形で MapFile の出力内容が変更されます。
MapFile が存在する場合に実行: MapFile の内容を読み込んで編集しデータの出力
出力されるデータは、"abcd .. xyz" のテキストを実行する度に "zyx ... cba" というように並びを反転させて出力しています。
実行結果
popen / pclose を利用したプロセスの起動では、"cat makefile | wc" のようなシェル上で利用するパイプによるコマンドを渡すことも可能です。
リダイレクションによる実装例は こちら
実行結果
リダイレクションにより子プロセスから出力される文字列を親プロセスへと渡しています。
ping コマンド等、C言語などにて実装が困難な処理を外部コマンドとして呼び出し、その結果にて処理を分岐する用途に使う際に便利になります。
実行結果
char 型のデータを動的に確保し、確保した文字列の表示、行と列を入れ替えて文字列の表示を行なっています。
実行結果
前回 の例では、int 型のデータ構造にしか対応していませんでしたが、今回の例では double 、指数表示(ex. 5.3766714e-01)型のデータにも対応し、データの表示、編集を行なっています。
指数表示型のデータは実質 double 型で扱って良いもので、DispData で表示される形式が異なるのみとなります。
実行結果
html2txt により抽出されたテキストの例:
html2txt コマンドに与えられる引数(#define USE_LIB 0 としてビルド):
USAGE: html2txt htmlfile [-disp] [-link] [-out textfile] [-url baseurl]
-disp: ファイルに出力される HTML を標準出力(stdout)へ出力するように変更
-link: リンク部のタグを残したまま出力
-out textfile: 出力するファイル名を .txt 等から指定のファイル名に変更
-url baseurl: リンクを出力する際、ベースとなる URL を設定することにより相対参照を絶対参照に変更
ソース等をまとめたもの:DL(html2txt.zip)
html2txt.cpp(HTML 記号をテキストに変換する処理の部分が記号として変換されて表示されているため、上の html2txt.zip に含まれるソースをDLしてご利用ください)
html2txt.h 実行結果
例題により変換された HTML の例:exp1.cpp / samp.html
ソース等をまとめたもの:DL(cpp2html.zip)
exp1.cpp 実行結果 exp2.cpp
以下の例では、ソースファイルからHTMLファイルに変換するクラスを cpp2html.cpp/cpp2html.h に記述し、そのクラスを利用し対応するソースファイル(.c,.cc,.cpp,.h,.hh,.hpp)を一括してHTMLに変換するためのコマンドラインアプリを作成する例(src2html.cpp)を掲載しています。
src2html により変換された HTML の例:cpp2html.cpp / cpp2html.h / src2html.cpp
cpp2html コマンドに与えられる引数(#define USE_LIB 0 としてビルド):
USAGE: cpp2html srcfile [-disp] [-plain] [-out htmlfile] [-t n] [-no]
-disp: ファイルに出力される HTML を標準出力(stdout)へ出力するように変更
-plain: HTML ヘッダを省き、ソース部分のみ HTML 化したコードを出力
-t n: タブを空白に置き換える際の空白数を n で与える
-out htmlfile: 出力するファイル名を _cpp.html 等から指定のファイル名に変更
ソース等をまとめたもの:DL(cpp2html.zip)
cpp2html.cpp
cpp2html.h
src2html.cpp 実行結果
Makefile