Strip block comments: Difference between revisions

Content added Content deleted
m (apply polish)
m (→‎{{header|C}}: prettier)
Line 142: Line 142:


=={{header|C}}==
=={{header|C}}==
<lang C>#include<stdio.h>
<lang C>#include <stdio.h>
#include<string.h>
#include <string.h>
#include<stdlib.h>
#include <stdlib.h>


char*ca="/*",*cb="*/";
char *ca = "/*", *cb = "*/";
int al=2,bl=2;
int al = 2, bl = 2;


char *loadfile(char *s) {
void pause(){
FILE *f = fopen(s, "rb");
puts("Press Enter");
int l;
getchar();
}


if (f != NULL) {
char*loadfile(char*s){
fseek(f, 0, SEEK_END);
FILE*f;
l = ftell(f);
int l;
s = malloc(l+1);
if(f=fopen(s,"rb")){
rewind(f);
fseek(f,0,SEEK_END);
if (s)
s=malloc((l=ftell(f))+1);
rewind(f);
fread(s, 1, l, f);
fclose(f);
if(s)fread(s,1,l,f);
}
fclose(f);
return s;
}
return s;
}
}


void stripcomments(char*s){
void stripcomments(char *s) {
char*a,*b;
char *a, *b;
int l=strlen(s)+1;
int len = strlen(s) + 1;

while(a=strstr(s,ca)){
b=strstr(a+al,cb);
while ((a = strstr(s, ca)) != NULL) {
b = strstr(a+al, cb);
if(!b)break;
if (b == NULL)
b+=bl;
break;
memmove(a,b,l-(b-a));
b += bl;
}
memmove(a, b, len-(b-a));
}
}
}


int main(int argc,char**argv){
int main(int argc, char **argv) {
char*s="input.txt";
char *s = "input.txt";

if(argc>=2)s=argv[1];
if (argc >= 2)
s=loadfile(s);
s = argv[1];
if(argc==4){
al=strlen(ca=argv[2]);
s = loadfile(s);
if (argc == 4) {
bl=strlen(cb=argv[3]);
al = strlen(ca = argv[2]);
}
bl = strlen(cb = argv[3]);
stripcomments(s);
}
puts(s);
stripcomments(s);
pause();
puts(s);
return 0;
return 0;
}</lang>
}</lang>
;Usage:
;Usage:
Line 205: Line 206:
}
}


Press Enter</pre>
</pre>


=={{header|C++}}==
=={{header|C++}}==