Simple GUI Notepad Using Ruby

GUI Notepad Using Ruby Code require 'tk' class Notepad def saveFile file = File.open("note", "w") ...

Tuesday, March 24, 2015

C Program To Delete All Single Line and Multiline Comment From A C File

The problem is to delete all comment lines from a C or C++ or any other programming languages that uses comment like single line comment ( // )  and multi-line comment (/**/).

The program given below will delete all the comment line in a file. If the code is not working properly please comment below in the comment section. If someone have some better approach also comment below.

#include <stdio.h>
#include <unistd.h>
#include <string.h>

void refine(const char line[]) 
{
    char *sl = "//", *ml = "/*", *ptSingleLine, *ptMultiLine;
    ptSingleLine = strstr(line, sl);
    if ( ptSingleLine ) {
        *ptSingleLine = '\0';
    }   
    ptMultiLine = strstr(line, ml);
    if ( ptMultiLine ) {
        *ptMultiLine = '\0';
    }
}


int findComment(const char *line) 
{
    char *singleLine = "//", *multiLine = "/*" ;
    
    if ( strstr(line, singleLine) || strstr(line, multiLine)) {
        return 1;
    }
    else {
        return 0;
    }
}

int main()
{
    int found;
    FILE *fin, *fout;
    char ch, line[200], fname[100], temp[50];
    
    printf("Enter The Name Of The File: ");
    fflush(stdin);
    gets(temp);
    
    getcwd(fname, 99);
    
    strcat(fname, "/");
    strcat(fname, temp);

    fin = fopen(fname, "r");
    fout = fopen("new.c", "w");
    
    if ( fin == NULL ) {
        printf("\nFile %s Not Found.", fname);
    }
    else {  
        while ( fgets(line,  100, fin) != NULL )
        {
            found = findComment(line);
            if( found == 1 ) {
                refine(line);
                fprintf(fout, "%s", line);
            }
            else {
                fprintf(fout, "%s", line);
            }
        }
        printf("\nDone Copying To 'new.c' W/O Comment Lines.");
        fclose(fin);
        fclose(fout);
    }
    return 0;
}