性#include<stdio.h> #include<stdlib.h> #include<assert.h> #include<string.h> char *get_str(char *src,char *dst) { char *start=src; static int count=0; int i=0; while ( *start) { if (*start==‘/‘&&*(start+1)==‘/‘&&count%2==0) { count++; break; } else if(*start==‘*‘&&*(start+1)==‘/‘) { start+=2; count++; break; } *(dst++)=*(start++); } *dst=0; return start; } //注释与代码混合时的例子 void fun2() { char src[]="//999*/666//999*/534643666//"; char dst[10]; char *arr=src; while(*arr) { arr=get_str(arr,dst); printf("%s\n",dst); } } //注释多行时的处理。 int main() { FILE *fr=fopen("in.txt","rb"); FILE *fw=fopen("out.txt","wb"); //assert(fr!=NULL); //assert(fw!=NULL); char start[50]; char arr[100]="//"; char *str=NULL; int count=0; int n=0; while( fgets(start,100,fr)!=NULL) { str=start; while(*str) { if(*str==‘/‘&&*(str+1)==‘*‘) { *(str+1)=‘/‘; count=1; } if(*str==‘*‘&&*(str+1)==‘/‘&&count==1) { *str=0; strcat(arr,start); fputs(arr,fw); count=0; break; } str++; } n++; if(count==1&&n==1) { fputs(start,fw); } else if(count==1&&n!=1) { strcat(arr,start); fputs(arr,fw); arr[2]=0; } } fclose(fr); fclose(fw); return 0; } //项目没有合并好,对于最重要的2种情况,能分别处理,而合并互相有影响
原文:http://wz609.blog.51cto.com/10821410/1730908