c·c++/c 프로그래밍

주석 제거하기

바로이순간 2012. 10. 2. 14:55

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

int main() {

    FILE* inStream;               // 입력파일스트림

    FILE* outStream;              // 출력파일스트림

    char InFile[256];             // 입력파일명

    char OutFile[256];            // 출력파일명

    char ch, copy;


    while(1) {

        printf("C 소스파일명을입력하세요: ");

        gets(InFile);

        printf("출력파일명을입력하세요: ");

        gets(OutFile);

        if(0==strcmp(InFile, OutFile)) {   // 입력파일명과출력파일명이같으면

            printf("입력파일과출력파일명이같습니다.\n");

            continue; // 계속

        }

        else // 다르면

            break; // 중지

    }

 

    inStream = fopen(InFile, "rt");               // 입력파일을연다

    if(NULL==inStream) {

        printf("입력파일을여는데실패했습니다.\n");

        exit(1);

    }

    outStream = fopen(OutFile, "wt");            // 출력파일을연다

    if(NULL==outStream) {

        printf("출력파일을여는데실패했습니다.\n");

        exit(1);

    }

 

    while((ch=fgetc(inStream))!=EOF) {    // 파일의끝까지한문자씩읽어들인다

        if(ch=='/') {  // 문자가'/' 이면

            copy = ch; // copy에다가저장해놓고

            ch = fgetc(inStream); // 다음문자를읽는다

            if(ch==EOF)  { // 하필다음글자가파일의끝이면

                fputc(copy, outStream); // 마지막문자'/'를쓰고

                break; // 프로그램종료

            }

            else if(ch=='*') { // 그다음문자가'*' 이면, 즉"/*" 이면

                while(1) { // "*/"를만날때까지반복

                    // '*'를만날때까지반복

                    while((ch=fgetc(inStream))!='*');

                    // '/'이면종료

                    if((ch=fgetc(inStream))=='/')

                        break;

                }

            }

            else if(ch=='/') {

                while((ch=fgetc(inStream))!='\n');

                fputc(ch, outStream);

                continue;

            }

            else  { // "/*"가아니면

                fputc(copy, outStream); // 먼저'/'를쓰고

                fputc(ch, outStream); // 그다음읽은문자를쓰고

                continue; // 계속한다

            }

        } 

        else {

            fputc(ch, outStream); // 주어진문자를출력한다

        }

    }

    fclose(inStream); // 입출력파일들을닫는다

    fclose(outStream);

 

    printf("1 개파일의comment를삭제하였습니다.\n");


    return 0;

}

'c·c++ > c 프로그래밍' 카테고리의 다른 글

원형큐  (0) 2012.10.08
c언어에서 %[^\n] 가 의미하는 것이 무엇인가요 ?  (0) 2012.10.08
조합의 계산  (0) 2012.09.19
부분집합의 합  (0) 2012.09.19
최대약수구하기-순환호출  (0) 2012.09.19