■ テキストファイルをHTML化する
/* txt2html.c : テキストファイルをHTML化する
*
* Copyright (c) 2000, 2006 AOK.
*
* 2000.07.17 - 初版
* 2000.10.30 - 2版
* 2006.11.19 - 3版
*/
#include <stdio.h>
#include "misc.h"
#define TABWIDTH 4
/* タブをスペースに変換 */
void fill_space(int n, FILE *fp)
{
int num = TABWIDTH - n % TABWIDTH;
while (num-- > 0) fputs(" ", fp);
}
/* メインルーチン */
int main(int argc, char **argv)
{
FILE *fin, *fout;
char filename[FILENAME_MAX+1];
int ch, col;
putchar('\n');
if (argc < 2) {
puts("パラメータが足りません.\n\n使い方:TXT2HTML filename");
return 1;
}
argv++;
change_ext(filename, *argv, "htm");
if ((fin = fopen(*argv, "r")) == NULL) {
fprintf(stderr, "エラー:%sを開けません.\n", *argv);
return 1;
}
if ((fout = fopen(filename, "w")) == NULL) {
fprintf(stderr, "エラー:%sを開けません.\n", filename);
fclose(fin);
return 1;
}
printf("%s → %s\n", *argv, filename);
fputs("<html>\n<head>\n", fout);
fputs("<meta http-equiv=\"Content-Type\" ", fout);
fputs("content=\"text/html;charset=Shift_JIS\">\n", fout);
fprintf(fout, "<title>%s → %s</title>\n", *argv, filename);
fputs("<style type=\"text/css\">\n<!--\n", fout);
fputs("body { font-family:monospace; }\n-->\n</style>\n", fout);
fputs("</head>\n<body>\n", fout);
col = 0;
while ((ch = getc(fin)) != EOF) {
switch ((char)ch) {
case '\t':
fill_space(col, fout); col = -1; break;
case '\n':
fputs("<BR>\n", fout); col = -1; break;
case ' ':
fputs(" ", fout); break;
case '>':
fputs(">", fout); break;
case '<':
fputs("<", fout); break;
case '&':
fputs("&", fout); break;
case '\"':
fputs(""", fout); break;
default:
fputc((char)ch, fout); break;
}
col++;
}
fputs("\n</body>\n</html>\n", fout);
fclose(fin);
fclose(fout);
puts("変換に成功しました.");
return 0;
}