Reportなるもの/84941

昨日の夜はReportなるものを、久しぶりにやった。

課題2の自由課題みたいなやつで、HTMLファイルをよんで、TeXに変換みたいなプログラムをつくったのだけれど、
もう少し進化させれば割と実用的になるんじゃないかと思う。
これを思いついたのは all todai.comで、英語Iの和訳が落ちてたのだけれど、どうも印刷する気にもなれず読みにくかったので、置換機能で一々置き換えてうんたらかんたら〜 とかやってたのを一括置換できないかと思ってやってみた。

 ただ、この置換というのは良い所もあって、HTML文章の「書き方」みたいなのは書く人ごとに差異があって、その構造を見ながらうまく整形できたりするのが置換のいい所だった(例えばall todai comのでは改行二つ+全角スペースの3つをセットで\parにしたらうまい置換ができる)。

 このあたりの機微をどうすればいいのか、というのが今後の課題、だなあ。
作ったソースは以下。まだまだプログラム慣れしてなくて美しくない感じ。

#include
int main(void){
FILE* fp_html;
FILE* fp_tex;
char buf[5000];
char buf2[5000];
char buf3[5000];
char kaisi ="\\documentclass[a4paper,10pt]{jsarticle}\n\\begin{document}\n";
char owari
="\n\\end{document}\n";
int i,j,k;
printf("TeX 変換したいファイルを、このプログラムと同じフォルダに移動し、test.txt とリ
ネームしてください。\n");
fp_html = fopen("test.txt","r");
fp_tex = fopen("test.tex","w");
if(fp_html==NULL){
printf("no such file\n");
}
i=0;
j=0;
k=0;
fprintf(fp_tex,"%s",kaisi);
while(fgets(buf,5000,fp_html) != NULL){
fscanf(fp_html,"%s",&buf2);
for(i=0;buf2[i]!=’\0’;i++){
if(buf2[i]==’<’){
/*
の時*/
if( buf2[i+1]==’b’ && buf2[i+2]==’r’ && buf2[i+3]==’>’){
buf2[i]=’\n’;
buf2[i+1]=’\\’;
buf2[i+2]=’\\’;
buf2[i+3]=’\n’;
i=i+3;
}
/*

の時*/
else if( buf2[i+1]==’p’ && buf2[i+2]==’>’){
for(j=i;buf2[j]!=’\0’;j++){
buf3[j]=buf2[j];
}
for(j=i+1;buf2[j]!=’\0’;j++){
buf2[j-1]=’’;
buf2[j]=’’;
buf2[j+1] = buf3[j];
}
buf2[i]=’\\’;
buf2[i+1]=’p’;
buf2[i+2]=’a’;
buf2[i+3]=’r’;
buf2[i+4]=’\n’;
i=i+4;
}
else if( buf2[i+1]==’/’ && buf2[i+2]==’p’ && buf2[i+3]==’>’){
buf2[i]=’’;
buf2[i+1]=’’;
buf2[i+2]=’’;
buf2[i+3]=’’;
i=i+3;
}
else if(buf2[i+1]==’h’ && buf2[i+2]==’1’ && buf2[i+3]==’>’){
/*12 文字送ればいい。*/
for(j=i;buf2[j]!=’\0’;j++){
/*buf3 にbuf2 と同内容をコピー*/
buf3[j]=buf2[j];
}
for(j=i+1;buf3[j]!=’\0’;j++){
/*buf2 に12 文字分空白を入れる。*/
buf2[j-1]=’’;
buf2[j]=’’;
buf2[j+1]=’’;
buf2[j+2]=’’;
buf2[j+3]=’’;
buf2[j+4]=’’;
buf2[j+5]=’’;
buf2[j+6]=’’;
buf2[j+7]=’’;
buf2[j+8]=’’;
buf2[j+9]=’’;
buf2[j+10]=’’;
/*13 番目から同内容をCopy*/
buf2[j+11] = buf3[j];
}
buf2[i]=’\n’;
buf2[i+1]=’\\’;
buf2[i+2]=’p’;
buf2[i+3]=’a’;
buf2[i+4]=’r’;
buf2[i+5]=’a’;
buf2[i+6]=’g’;
buf2[i+7]=’r’;
buf2[i+8]=’a’;
buf2[i+9]=’p’;
buf2[i+10]=’h’;
buf2[i+11]=’{’;
i= i+11;
}
else if(buf2[i+1]==’/’ && buf2[i+2]==’h’ &&
buf2[i+3]==’1’ && buf2[i+4]==’>’){
buf2[i]=’}’;
buf2[i+1]=’\n’;
buf2[i+2]=’’;
buf2[i+3]=’’;
buf2[i+4]=’’;
i=i+4;
}
else{
for(k=i;buf2[k]!=’>’;k++){
k=k;
}
for(i;i

うわー、貼り付けたらTabが消えた。まあいいか。うぇ。

どうでもいいけれど、今やっているソフトバンクのCMは、アレか。
夜9時まで通話したって無駄って事か?w
ほんとSoftbankCMは、「外してる」と思う。