#include #include #define BUF 0x10000 /* 64KB */ /* ----- 滅入ん ----- */ void main(int argc, char *argv[]) { FILE *fp; int i; int count; /* 1 行内の桁数カウンタ */ int found; /* コメント中かのフラグ */ char *buf; if (argc < 2) { /* コマンドライン引数のチェック */ fprintf(stderr, "エラー!:ファイル名を指定してください\n"); /* だめです */ exit(1); } if ((buf = (char *)malloc(BUF)) == NULL) { /* バッファメモリ確保 */ fprintf(stderr, "エラー!:メモリを確保できません\n"); /* だめです */ exit(1); } for (i = 1; i < argc; i++) { /* 引数のある限り続ける */ printf("ファイル名:%s\n", argv[i]); if ((fp = fopen(argv[i], "r")) == NULL) { /* 引数のファイル名をオープンしてみる */ fprintf(stderr, "エラー!:ファイルをオープンできません\n"); /* だめです */ free(buf); /* メモリ開放しておこう */ exit(1); } found = 0; while (fgets(buf, BUF, fp) != NULL) { /* EOF まで読む..の? */ for (count = 0; buf[count] != '\0'; count ++) { /* '\0' まで読む */ if (found == 0) { /* まだコメント中じゃないとき */ if (buf[count] == '/' && buf[count + 1] == '*') { found = 1; /* コメントを発見した! */ count++; /* カウンタを進めておく */ } else { putchar(buf[count]); /* フツーに 1 文字表示 */ } } else { /* 時既にコメント中のとき */ if (buf[count] == '*' && buf[count + 1] == '/') { found = 0; /* コメント終了っぽい */ count++; /* カウンタを進めておく */ } } } } fclose(fp); /* ファイルを閉じておく */ } free(buf); /* メモリ開放 */ }