campo-sirio/projects/fastrip.cpp
alex db2eb89b49 Patch level :
Files correlati     :
Ricompilazione Demo : [ ]
Commento            :


git-svn-id: svn://10.65.10.50/branches/R_10_00@20703 c028cbd2-c16b-5b4b-a496-9718f37d4682
2010-07-27 15:09:51 +00:00

58 lines
933 B
C++
Executable File

#include <ctype.h>
#include <string.h>
#include <stdio.h>
void strip(FILE * i, FILE * o)
{
char lin[513];
while (fgets(lin, 512, i) != NULL)
{
char * c = lin;
for(; isspace(*c); c++); // salta spazi iniziali
char instring = '\0';
char wasspace = 0;
for (; *c; c++)
{
if (*c == '/' && *(c+1) == '/') break;
if (*c == '#')
{
fputc(*c, o);
while (isspace(*(++c)));
}
if (*c == '"' || *c == '\'')
{
if (instring == *c) instring = '\0';
else
if (instring == '\0') instring = *c;
}
if (isspace(*c))
{
if (!instring)
{
if (wasspace) continue;
wasspace = 1;
}
} else wasspace = 0;
fputc(*c, o);
}
}
}
int main(int argc, char ** argv)
{
// cerr << "Strip 0.93 - White spaces filter by Guy '93" << endl;
FILE * i = argc > 1 ? fopen(argv[1], "r") : stdin;
FILE * o = argc > 2 ? fopen(argv[2], "w") : stdout;
strip(i, o);
return 0;
}