#define _CRT_SECURE_NO_WARNINGS #include #include void strip(FILE * i, FILE * o) { char lin[513]; while (fgets(lin, 512, i) != NULL) { char instring = '\0'; char wasspace = 0; char* c = lin; for(; isspace(*c); c++); // salta spazi iniziali for (; *c; c++) { if (*c == '/' && *(c+1) == '/') { fputc('\n', o); 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 && *c != '\n') continue; wasspace = 1; } } else wasspace = 0; fputc(*c, o); } } } int main(int argc, char ** argv) { // cerr << "Strip 1.2 - White spaces filter by Guy 2012" << endl; FILE* i = argc > 1 ? fopen(argv[1], "r") : stdin; FILE* o = argc > 2 ? fopen(argv[2], "w") : stdout; if (i && o) strip(i, o); if (o) fclose(o); if (i) fclose(i); return 0; }