Cのソースファイルをhtmlファイルに貼り付けるために

最終更新日:2004-06-09.

今回は、Cのソースファイルをhtmlファイルに貼り付けるための
文字変換ソフトをちょっと作ってみたいと思います。
これは、必要に迫られてのこと。
まだ、意味の分からない人はそのまま読み流してください。

Cのソースファイルをhtmlファイルに貼り付ける際、
小なり、大なり記号はhtmlタグの部品と重なってしまうため、
正しく表示されません。

そのため、文字の変換が必要になります。
それを行ってくれるのが以下のプログラムです。

このプログラムにCのソースが書かれたファイル名を指定すると、
小なり、大なり記号の部分を変換してくれます。

そして、その結果を標準出力(画面)に出力します。
もし、それをファイルに保存したいときには、
リダイレクション記号を使います。
出力するときは大なり記号ですね。

例えば。
下記のソースをLTGT.Cという名前でファイルに保存したとします。
それをコンパイルするには、以下のように実行します。
LCC LTGT.C

すると、LTGT.EXEができあがります。
これにCのソースファイル名を指定すると変換した内容を
画面に表示します。
LTGT.EXE LTGT.C

そして、その内容をファイルに保存したいときは、
以下のように実行します。
LTGT.EXE LTGT.C >LTGT.HTM
+------------------------------------------------------------+
/* filename=no004-1.c */
/* include */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <jstring.h>
/* 関数プロトタイプ宣言 */
void help(void);
void print_htm(char *wk);
char *search_tag(char *wk);
void print_p(char *p, char *q);
/* main */
int main(int argc, char **argv)
{
FILE *fp;
char wk[1024];
/* help表示 */
if( argc==1 )
help();
/* file open */
if( (fp=fopen(argv[1],"r"))==NULL )
help();
/* 繰り返し */
while( fgets(wk, 1024, fp)!=NULL )
print_htm(wk);
/* file close */
fclose(fp);
/* 終了 */
return 0;
}
/* help() */
void help(void)
{
printf("入力ファイル名?\n");
exit(0);
}
/* htmlで出力 */
void print_htm(char *wk)
{
char *p;
/* 改行タグ */
printf("<br>");
/* 文字列がなくなるまで */
while( *wk ){
/* <または>を調べる */
p=search_tag(wk);
/*なければ出力後にループを抜ける */
if( p==(char *)NULL ){
printf("%s", wk);
break;
}
/* 先頭から記号の直前まで出力 */
print_p(wk, p-1);
/* 記号の変換 */
if( (*p)=='<' )
printf("<");
if( (*p)=='>' )
printf(">");
/* ポインタを進める */
wk=p+1;
}
/* 戻る */
return;
}
/* search_tag */
char *search_tag(char *wk)
{
char *p, *q;
/* <または>を調べる */
p=jstrchr(wk, '<');
q=jstrchr(wk, '>');
/* どちらもなければ */
if( (p==(char *)NULL) && (q==(char *)NULL) )
return p;
/* どちらかある方を */
if( p==(char *)NULL )
return q;
if( q==(char *)NULL )
return p;
/* 両方あれば小さい方を */
if( q<p )
p=q;
return p;
}
/* 範囲出力 */
void print_p(char *p, char *q)
{
while( p<=q ){
printf("%c", *p);
p++;
}
return;
}
+------------------------------------------------------------+

これで、Cのソースファイルをhtmlファイルに貼り付ける際の手間が
一つ減りました。

戻る