本来前面我讲过了使用shell脚本进行的字符串替换,由于这种方法太不安全,没办法只好使用最古老的办法c语言来实现了, 说实话c语言真是个好东西,只有没有想到的没有c语言不能解决,至少从我工作中我是这样认为的,可能您是不这么认同的,我也知道世界上没有什么是最完美的,要不然就不会有其他语言的产生了。在其职而谋其事,我只是谈谈我对c的感觉。
工作了大半年,c语言我也学习了很长时间,可是对于c中的指针算法还有字符串的输出,内存的操作总是把握不好真是郁闷死了,可能自己的脑袋就是缺少一根玄吧,但是对于c语言的热爱还是瞒有热情,我比较钟爱于它,它给人的想法总是那么奇妙,给人脑子一玩转的空间,我对脑筋急转弯可是很菜的,同伴经常考问,我总是想不到等到说出答案感觉豁然开朗,我总是怀疑是不是自己的智商就是这点,这么点智商我来学习c语言是不是有些找死,呵呵现在看来无所谓了,不管是沿用别人的代码还是自己想出来实现的代码,在我看来把问题解决了就是通过,一眼可以学习。是不是有点不管白猫黑猫抓着老鼠就是好猫的感觉,您别笑话我。
这段代码是一个独立函数代码,我没有加以函数封装,说实话有时感觉c++真是好东西,如果每个人能够用c++很好的整理出自己做过的一些项目中内容,做好通用封装性,以后别人拿来直接用真是方便无比,要比使用c这样笨重的函数我感觉好多了,省太多的事情,c++我没有深入的学习,人家说如果学计算机不好好深入学习c++就等于瞎子在c中打滚,也不知道是真是假也许是自己可能还没有经历,只是简单的感概,看来后期的学习中我还是应该要去好好的看看c++,以前上学的时候感觉太好了,c++课基本上每堂课都在睡觉,老师讲的越是有意思我睡的越是香,现在想想大好时光就这么被自己浪费掉了,回过头来还要自己去学习,真是不值。
好了又扯了这么多,不好意思了,没办法博客是自己吐露工作感概的地方,如果您不像听那也没有办法,使用共享代码您总是要有点回报嘛,这里也不是什么金钱回报就是听我发发感概,发发牢骚就好。呵呵 ,请您千万别见怪唷
马上开始代码:
FILE *xmlFile;
char buf[256];
int j;
int count;
memset(buf,'/0',sizeof(buf));
char *tempstr="<friendlyName>",*pstr;
if((xmlFile = fopen("/web/tvdevicedesc.xml","r"))!=NULL)
{
for(j=0 ;fgets( buf, sizeof(buf) ,xmlFile );j++)
{
sprintf(obj[j].buff,"%s/0",buf);
}
fclose(xmlFile);
}
if((xmlFile = fopen("/web/tvdevicedesc.xml","w"))!=NULL)
{
for(count=0;count<j;count++)
{
pstr = strstr(obj[count].buff,tempstr);
if(pstr==NULL)
{
fprintf(xmlFile,"%s",obj[count].buff);
}
else
{
if(friname==NULL || (strlen(friname)==0))
{
fprintf(xmlFile,"%s",obj[count].buff);
}
else{
fprintf(xmlFile,"<friendlyName>%s</friendlyName>/n",friname);
}
}
}
fclose(xmlFile);
}
这里的xmlFile 是xml文档,而,"<friendlyName>这个是xml的一个节点,主要是对节点的name进行替换。其中的定义typedef struct
{
char buff[512];
} file;
file obj[512]; 这是一个结构体,其实就是一个二维的数组。由于整个代码中需要所以就这样定义了,如果想要单独的其中的friname就是要替换的字符串。