I wrote this program to remove comments from a C source file, accepting a file name from the command prompt. Let me know if I missed anything or if there are any improvements that can be made in the program.

	#include<stdio.h>
	#include<stdbool.h>

	void m_cmnt( FILE *fp )
	{
		int prev=0 , ch ;

		while ((ch=getc(fp))!=EOF)
		{
			if ( prev== '*' && ch == '/')
				return ;
			else
			prev=ch ;
		}
	}

	void s_cmnt( FILE *fp )
	{
		int ch ;
		while ( (ch=getc(fp))!='\n' && ch!=EOF )
			;
	}

	int main ( int c , char **arr )
	{
			FILE *fp , *np ;
			int ch , prev=0 ;
			bool String=0 ;

			fp = fopen(arr[1] , "r") ;
			np = fopen("temp.txt" , "w") ;

			if (fp==NULL )
			{
				printf ("Invalid/No Filename given as Argument ! \n") ;
				return 1 ;
			}
			while ((ch=getc(fp))!=EOF )
			{
				/* file pointer currently not inside a string */
				if ( !String )
				{
					if ( ch=='/' )
					{
						prev=ch ;
						ch= getc(fp) ;
						switch(ch)
						{
							case '*'  : m_cmnt( fp) ;
										 break ;
							case '/'  : s_cmnt( fp) ;
										 break ;
							default   :  putc(prev , np) ;
										 putc(ch , np) ;
										 break ;
						}
					}
					else putc( ch ,np ) ;
				}
				else  putc(ch , np) ;

				if ( ch=='\"')
					String = !String ;
				prev = ch ;
			}

		fclose(fp) ;
		fclose(np) ;
		remove(arr[1]) ;
		rename( "temp.txt" , arr[1] ) ;
        return 0 ;
	}