Skip to content
Related Articles

Related Articles

Remove comments from a given C/C++ program
  • Difficulty Level : Easy
  • Last Updated : 16 May, 2017

Given a C/C++ program, remove comments from it.

We strongly recommend to minimize your browser and try this yourself first.

The idea is to maintain two flag variables, one to indicate that a single line comment is started, another to indicate that a multiline comment is started. When a flag is set, we look for the end of comment and ignore all characters between start and end.

Following is C++ implementation of above idea.




// C++ program to remove comments from a C/C++ program
#include <iostream>
using namespace std;
  
string removeComments(string prgm)
{
    int n = prgm.length();
    string res;
  
    // Flags to indicate that single line and multpile line comments
    // have started or not.
    bool s_cmt = false;
    bool m_cmt = false;
  
  
    // Traverse the given program
    for (int i=0; i<n; i++)
    {
        // If single line comment flag is on, then check for end of it
        if (s_cmt == true && prgm[i] == '\n')
            s_cmt = false;
  
        // If multiple line comment is on, then check for end of it
        else if  (m_cmt == true && prgm[i] == '*' && prgm[i+1] == '/')
            m_cmt = false,  i++;
  
        // If this character is in a comment, ignore it
        else if (s_cmt || m_cmt)
            continue;
  
        // Check for beginning of comments and set the approproate flags
        else if (prgm[i] == '/' && prgm[i+1] == '/')
            s_cmt = true, i++;
        else if (prgm[i] == '/' && prgm[i+1] == '*')
            m_cmt = true,  i++;
  
        // If current character is a non-comment character, append it to res
        else  res += prgm[i];
    }
    return res;
}
  
// Driver program to test above functions
int main()
{
    string prgm = "   /* Test program */ \n"
                  "   int main()  \n"
                  "   {           \n"
                  "      // variable declaration \n"
                  "      int a, b, c;    \n"
                  "      /* This is a test  \n"
                  "          multiline     \n"
                  "          comment for   \n"
                  "          testing */      \n"
                  "      a = b + c;       \n"
                  "   }           \n";
    cout << "Given Program \n";
    cout << prgm << endl;
    cout << " Modified Program ";
    cout << removeComments(prgm);
    return 0;
}


Output

Given Program
   /* Test program */
   int main()
   {
      // variable declaration
      int a, b, c;
      /* This is a test
          multiline
          comment for
          testing */
      a = b + c;
   }

 Modified Program
   int main()
   {
             int a, b, c;

          a = b + c;
   }

This article is contributed by Sachin Gupta. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above

Attention reader! Don’t stop learning now. Get hold of all the important C++ Foundation and STL concepts with the C++ Foundation and STL courses at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up
Recommended Articles
Page :