因为我的新浪博客不支持C语言中的一些语法,会将<>中间的内容屏蔽,并且把中的内容屏蔽,所以我想用文件中替换的方式把一个编辑好了的.c或者.txt中的 < > 替换为“”
#include&quot;stdio.h&quot;
#include&quot;stdlib.h&quot;
#include&quot;string.h&quot;
#define N 100*1024 // 设定文件最大字符个数不超过100k,可更改*/
int main()
{
int i=0,j,k=0,m=0,pos=0,max;
char s[N];
FILE *fp;
if((fp=fopen(&quot;G:\\001.txt&quot;,&quot;r&quot;))==NULL)//设定文件位于当前目录下,可更改为绝对路径*/
{ printf(&quot;Open file error! &quot;);
system(&quot;pause&quot;);
exit(1);
}
s[i++]=fgetc(fp);
while(!feof(fp))
{s[i++]=fgetc(fp);
}
fclose(fp);//程序到此就是说明把文本中的内容放到s[]这个数组当中去了。
max=i-1;// 函数feof()最后会读两次,这个表示文件字节的个数,所以必须减1 */
for(i=0;i
printf(&quot;%c&quot;,s);//用于输出001.txt的文件便于观察变化
for(i=0;i<'和第一次出现'>'两个字符的时候中间一定会有&quot;***.h&quot;
//那么我们通过分析而得到了一种算法,以免错误的将大于号小于号改为&quot; 也就是说需要修改的<>中间必然含有.h
{
if(s=='<')
{
for(j=i;;j++) //无条件循环,如果碰到‘>’则退出,记录此时的j
{
if(s[j]=='>')
break;
}
for(pos=j;pos>=i;pos--)//从碰到'>’往回数如果出现第一个'<'(因为会出现类似<<<<<&quot;stdio.h&quot;这样的情况)
{
if(s[pos]=='<')
break;
}
for(m=j-3;m<>符号中间靠近j值的前3位含有'.' 则记录此时m的值退出
{
if(s[m]=='.')
break;
}
for(k=j-3;k<>符号中间靠近j值的前3位含有'h' 则记录此时k的值退出
{
if(s[k]=='h')
break;
}
if(k==(m+1))//判断如果满足'.'是在'h'之前则改变相应的数组中的值
{
s[pos]='&quot;';
s[j]='&quot;';
}
}
if(s=='/'&&s[i+1]=='*')//如果出现了//则改为//
s[i+1]='/';
}
for(i=0;i
printf(&quot;%c&quot;,s);//用于输出001.txt的文件便于观察变化
fp=fopen(&quot;G:\\002.txt&quot;,&quot;w&quot;);
for(i=0;i
{
fputc(s,fp); // 同时结果写入到当前目录下的新文件002.txt中*/
}
printf(&quot;\n\n&quot;);
fclose(fp);
system(&quot;pause&quot;);
return 0;
} |