001
#include
002 #include
003 #include
004
005 #define STRLEN 256
006
007 //只是去掉时间标记
008 char *parse_lrc_line(char *line)
009 {
010 char *p = NULL;
011 p = strrchr(line,']');
012 if(p == NULL)
013 {
014 goto END;
015 }
016 p = p + 1;
017
018 END:
019 return p;
020 }
021
022
023 //在其中解析包含时间标签的LRC文件的字符串,并输出到stdout,略微修改即具有实用价值(编码还是要改的)
024 void parse_lrc_line2(char *line)
025 {
026 char *p = NULL;
027 char *right = NULL;
028 char *left = NULL;
029 char buff[STRLEN] = {0};
030 char *p2 = NULL;
031
032 int n;
033 p = line;
034 //left为左边的[所在的位置
035 left = strchr(p,'[');
036 if (left == NULL)
037 {
038 return ;
039 }
040
041 //right为右边的]所在的位置
042 right = strchr(p,']');
043
044 while(right != NULL && left != NULL)
045 {
046 n = right - left - 1;
047 strncpy(buff,left + 1,n);
048 puts(buff);
049 p2 = strrchr(p,']');
050 if (p2 != NULL)
051 {
052 p2++;
053 puts(p2);
054 }
055
056 //可以在这里保存歌词和时间标签信息,此时时间标签为buff,歌词内容为p2
057
058 //这里把buff清空为\0。。反正总归要清空的,这样就不用计算字符串长度再补\0了
059 memset(buff,'\0',n);
060