因为我的新浪博客不支持C语言中的一些语法,会将<>中间的内容屏蔽,并且把中的内容屏蔽,所以我想用文件中替换的方式把一个编辑好了的.c或者.txt中的 < > 替换为“”
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#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("G:\\001.txt","r"))==NULL)//设定文件位于当前目录下,可更改为绝对路径*/
{ printf("Open file error! ");
system("pause");
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("%c",s[i]);//用于输出001.txt的文件便于观察变化
for(i=0;i'两个字符的时候中间一定会有"***.h"
//那么我们通过分析而得到了一种算法,以免错误的将大于号小于号改为" 也就是说需要修改的<>中间必然含有.h
{
if(s[i]=='
{
for(j=i;;j++) //无条件循环,如果碰到‘>’则退出,记录此时的j
{
if(s[j]=='>')
break;
}
for(pos=j;pos>=i;pos--)//从碰到'>’往回数如果出现第一个'
{
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]='"';
s[j]='"';
}
}
if(s[i]=='/'&&s[i+1]=='*')//如果出现了//则改为//
s[i+1]='/';
}
for(i=0;i
printf("%c",s[i]);//用于输出001.txt的文件便于观察变化
fp=fopen("G:\\002.txt","w");
for(i=0;i
{
fputc(s[i],fp); // 同时结果写入到当前目录下的新文件002.txt中*/
}
printf("\n\n");
fclose(fp);
system("pause");
return 0;
}