C - Remove all comments from a C program

Share a big cow's artificial intelligence tutorial. Zero-based! Easy to understand! Funny and humorous! Hope you join the artificial intelligence team too! Please click http://www.captainbed.net

/*
 * Write a program to remove all comments from a C program.
 * Don't forget to handle quoted strings and character constants properly.
 * C comments don't nest.
 *
 * RemoveComment.c - by FreeMan
 */

#include <stdio.h>

#define MAXLINE 1024 /* Max input line size */

char line[MAXLINE]; /* Current input line */
int GetLine(void);

int main()
{
	int in_comment, len;
	int in_quote;
	int t;

	in_comment = in_quote = t = 0;
	while ((len = GetLine()) > 0)
	{
		t = 0;
		while (t < len)
		{
			if (line[t] == '"')
			{
				in_quote = 1;
			}
			if (!in_quote)
			{
				if (line[t] == '/' && line[t + 1] == '*')
				{
					t = t + 2;
					in_comment = 1;
				}
				if (line[t] == '*' && line[t + 1] == '/')
				{
					t = t + 2;
					in_comment = 0;
				}
				if (in_comment == 1)
				{
					t++;
				}
				else
				{
					printf("%c", line[t]);
					t++;
				}
			}
			else
			{
				printf("%c", line[t]);
				t++;
			}
		}
	}

	return 0;
}

/* GetLine: Specialized version */
int GetLine(void)
{
	int c, i;
	extern char line[];

	for (i = 0; i < MAXLINE - 1 && (c = getchar()) != EOF && c != '\n'; ++i)
	{
		line[i] = c;
	}
	if (c == '\n')
	{
		line[i] = c;
		++i;
	}
	line[i] = '\0';

	return i;
}

 

Guess you like

Origin blog.csdn.net/chimomo/article/details/112919527