/* loplist.c */ /* 超人ロックMLに投稿した * エピソード名惑星名1, [$]惑星名2, [%]惑星名3, [<改行>], 惑星名n;<改行> * 形式のデータを、lop.cが扱う * エピソード名惑星名1,[$]惑星名2,[%]惑星名3,惑星名n,<改行> * 形式に変換して標準出力に出力する。 * ただしメールを直接読み込むのではなく、僕が自宅で作ったファイル群 * lop[0-n].txtを読み込む仕様になっている。これらの中身は純粋にデータだけ。 * メールに#datain, #dataoutみたいなしるしをつけておけばよかったと * 後悔しきり(すいません)。 */ /* コンパイルマシン/OSはPC/AT互換機、Windows98SE、コンパイラはLSI-C86 * Compiler ver 3.30c [Aug 19 1993] (試食版)。CPUはPentium IIIだが、 * コンパイラがリアルモードで動作するのでだからどうということはない。 * 特に特定の環境に依存するようなコードを書いたつもりはない。 */ /* 動けばいい、が方針なので少々行儀の悪いところもある。 * データファイルの文字コードについては無頓着なので注意。 * デバッグコードは恥ずかしいので(^^;、削除。 */ #include #include #include #include #define BUFSIZE 1024 /* 文字列バッファのサイズ */ int main(void) { char *c, filename[12]; char buf[BUFSIZE]; int i=1; /* 0じゃだめ */ FILE *fp; c=buf; while(1) { sprintf(filename, "lop%d.txt", i); /* sprintf(filename, "lop6.txt"); */ /* fprintf(stderr, "%s\n", filename); */ if(!(fp=fopen(filename, "r"))) { /* fprintf(stderr, "No such file.\n"); */ exit(1); } while(fgets(c, BUFSIZE, fp)!=NULL) { int stat = 0; /* 論理行の終わりかどうか */ while(*c != '\0') { if(*c == ';') { stat = 1; putchar(','); } else if(!(((*c==' ') && (*(c-1) == ',')) || (*c=='\n' && stat == 0))) { stat = 0; putchar(*c); } c++; } } c=buf; /* rewind */ i++; fclose(fp); } return 0; }