急!在线等...
media player9 大家都知道,它可以生成*.wpl 的playlist(播放清单).
比方一个例子,用记事本打开后可看到:
<?wpl version="1.0"?>
<smil>
<head>
<meta name="Generator" content="Microsoft Windows Media Player -- 9.0.0.3075"/>
<title>播放列表2</title>
</head>
<body>
<seq>
<media src="..\光辉岁月.mp3"/>
<media src="..\FOLDER2\beyond_真的爱你.mp3"/>
<media src="..\FOLDER1\情网.mp3"/>
<media src="..\FOLDER3\十年.wma"/>
<media src="..\FOLDER3\FOLDER31\FOLDER32\把悲伤留给自己.mp3"/>
</seq>
</body>
</smil>
我想请高手用c语言写一个程序,把这个.wpl里的所有歌曲名(例如"光辉岁月.mp3")找出来,按顺序排列在一个table里.谢谢
问题点数:50、回复次数:12Top
1 楼songyangaaron(千里独行)回复于 2004-08-01 21:53:36 得分 10
说个思路:
1.读入每一行
2.判断该行是否包含字符串"<media"
3.是的话查找最后一个"\"和"\"/>"的位置
4.取出中间的字符串Top
2 楼kaphoon(齐柏林飞艇)回复于 2004-08-01 22:44:24 得分 5
好像是蛮简单的
就是解析字符串~
把要的提取出来Top
3 楼herryhuang(Herry)回复于 2004-08-01 23:32:09 得分 5
这个属于xml文件的解析,有免费的xml处理库可以使用。
xerces是apache的一个项目,可以处理你这个问题。到www.apache.org可以找到最新的版本。
如果你对免费的东西不放心,可以使用微软的XMLSDK,到微软的网站上去下好了,微软的这个SDK速度会慢一些。Top
4 楼sunjx119(睿锐)回复于 2004-08-01 23:57:23 得分 0
是XML,有专门的API可用,比自己写的效率不知道要高多少倍!Top
5 楼waynahu(FIRE_BIRD-->涅磐)回复于 2004-08-03 14:24:42 得分 0
谢谢,我实在不会写CODE,还望各位大吓帮帮。。。Top
6 楼tangfulin(雨寒月)回复于 2004-08-03 16:26:13 得分 5
这个其实不用那么麻烦啦,就自己写啊。很简单的一个c代码吗!Top
7 楼qingyuan18(zealot_tang)回复于 2004-08-03 16:59:01 得分 10
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int maxline;
int count;
char temp[20][80]={0};
char key[20]="<media src="
char table[20][60]={0};
void get()
{
char *p;
int i=0;
FILE *fp;
if((fp=fopen("你的那个.html文件的url","r")==NULL)
printf("open file error!");
else
{
while(fgets(temp[i],fp)!=NULL)
{
p=strchr(temp[i],'\n');
if(p) *p=0;
i++;
}
maxline=i;
}
}
void trim()
{
int i,j;
int k;
int n=0;
for(k=0;k<maxline;k++)
{
for(i=0;temp[k][i]!=0;i++)
{
for(j=0;temp[k][i]==key[j];j++,i++);
if(j==strlen(key))
{
while((table[k][n++]=temp[k][i++])!=0);
}
}
}
count=n;
}
void print()
{
int i;
for(i=0;i<n;i++)
{
printf("歌曲名:\t%s\n",table[i]);
}
}
主要的思路就是这些,楼主以后还是尝试着先做做,很多事并不是你想象的那么复杂。Top
8 楼waynahu(FIRE_BIRD-->涅磐)回复于 2004-08-04 09:07:27 得分 0
herryhuang(Herry )
xerces是apache的一个项目,可以处理你这个问题
这是什么,能说的明白写吗?
xml是什么?Top
9 楼waynahu(FIRE_BIRD-->涅磐)回复于 2004-08-04 09:11:37 得分 0
qingyuan18(zealot_tang)能简要说明你的思路吗,谢谢!Top
10 楼herryhuang(Herry)回复于 2004-08-04 17:27:57 得分 5
waynahu(默默想你) :
这个文件的格式是XML,可扩展标记语言,现在很流行,许多公司都有处理这种格式的文件(或字符串)的程序库,但是好的库大都是要钱的。目前微软有xml的处理库msxml,可以在微软的网站上免费下载,但是这个库不完全符合w3c关于xml的标准,而且处理速度较慢。apache是gnu下的一个源代码开发组织,其最著名的项目就是apache http server,现在他们有一个xml项目,xerces是apache组织xml项目的一个产品,主要用来处理xml的文档结构,另有一个xalan,可以对xml进行格式化处理。这两个(xerces和xalan)都提供c/c++和java的库,以及所有源代码。
关于xml网上的讨论很多,随便搜搜救可以找到一大筐。Top
11 楼rorot(rorot)回复于 2004-08-04 20:11:46 得分 5
我觉得使用正则表达式简单
regex e( "<media src=\\\"([^\\\"]*\\\\)*([^\\\"]*)\\\">" );
Top
12 楼rorot(rorot)回复于 2004-08-04 20:13:10 得分 5
什么玩意嘛,CSDN过滤了数字键6上面那个字符,在表达式里都显示不出来了...
Top




