该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include//开动态内存用到的
int main ()
{
FILE *p;
char c,cc;//用来暂时存刚读出来的文件内容
char *pp;//用来存取数组的地址
int i=0,ii=0,iii=0;
int j,k=0,kk=0;
int jl=0;
char filename[50];
printf("请输入文件路径 例如:D:\\win\\1.c\n");
scanf("%s",filename);
if((p=fopen(filename,"r+"))==NULL){ //打开文件
printf("无法打开此文件");
exit(0);
}
while(!feof(p)){ //先计算一次这个文件的大小
i++;
c=fgetc(p);
}
rewind(p);//重新把文件标记回到前面
pp=(char *)calloc(i,1);//把前面计算的文件大小用来开个同样大小的数组
while(!feof(p)){//这步是把读到文件内容数组里
c=fgetc(p);
*(pp+ii)=c;
ii++;
}
*(pp+ii-1)='\0';//记得要数组后面加上\0
for(j=0;j
if(*(pp+j)=='\"')
jl=1;
if(*(pp+j)=='\"')
jl=0;
if(((*(pp+j)=='\/'&&*(pp+j+1)=='\/')||(*(pp+j)=='\/'&&*(pp+j+1)=='\*'))&&jl==0)
k=1;
if((*(pp+j)=='\n')||((*(pp+j-1)=='\*')&&(*(pp+j)=='\/')))
k=0;
if(k==1)
*(pp+j)=' ';
}
rewind(p);//重新把文件标记回到前面
fputs(pp,p);//把数组里的内容重新写到文件里
rewind(p);//重新把文件标记回到前面
while(!feof(p)){//输出看看改好了没有
cc=fgetc(p);
putchar(cc);
}
fclose(p);
return 0;
}