C语言动态链表 取MP3歌词文件内容 带VC6.0完整工程
来源:互联网 发布:手机淘宝首页尺寸大小 编辑:程序博客网 时间:2024/04/30 22:11
#include<stdio.h>#include<stdlib.h>#include<malloc.h>typedef struct LrcMessage{ char H_Lrc[125];//数组H_lrc为取得的一行歌词信息,包括时间标签 char H_Lrc_N_Time[100];//数组H_lrc为取得的一行歌词信息,不包括时间标签 long Time1;//Time1为时间标签转换后的毫秒数 char Time2[20];//Time2为时间标签,不包括"["和"]"字符 struct LrcMessage *pNext;}Lrc_Message,*P_Lrc_Message;P_Lrc_Message Create_Lrc_List(FILE *fp_lrc_filename){ int n=0; int minute=0,second=0,millisecond=0; char *p_H_Lrc,*p_Time2,*p_H_Lrc_N_Time,*p_AR_Lrc,*p_Ti_Lrc,*p_Al_Lrc; P_Lrc_Message pHead,pNew,pTemp; FILE *p1; pHead=(P_Lrc_Message)malloc(sizeof(Lrc_Message)); p1=fp_lrc_filename; if(NULL==pHead) { printf("申请内存失败,程序将自动退出"); exit(-1); } else { pHead->pNext=NULL; pTemp=(P_Lrc_Message)malloc(sizeof(Lrc_Message)); if(NULL==pTemp) { printf("创建节点失败"); exit(-1); } pHead->pNext=pTemp; fgets(pTemp->H_Lrc,124,p1); p_H_Lrc=pTemp->H_Lrc; p_Time2=pTemp->Time2; p_H_Lrc_N_Time=pTemp->H_Lrc_N_Time; while('\0'!=*p_H_Lrc) { if(*p_H_Lrc!='[')//跳过[ 和]符号的插入 { if(']'==*p_H_Lrc) { n++; *p_Time2='\0';//完成对数组Time2的赋值 } if(n==0) { if(*(p_H_Lrc+2)==':') { minute=(int)(*(p_H_Lrc)-'0')*10+(int)(*(p_H_Lrc+1)-'0'); } if(*(p_H_Lrc+2)=='.') { second=(int)(*(p_H_Lrc)-'0')*10+(int)(*(p_H_Lrc+1)-'0'); } if(*p_H_Lrc=='.') { millisecond=(int)(*(p_H_Lrc+1)-'0')*10+(int)(*(p_H_Lrc+2)-'0'); } *p_Time2=*p_H_Lrc; p_Time2++; } } if(n>0) { *p_H_Lrc_N_Time=*(p_H_Lrc+1); p_H_Lrc_N_Time++; } p_H_Lrc++; } pTemp->Time1=millisecond+minute*60*1000+second*1000; pTemp->pNext=NULL; pNew=(P_Lrc_Message)malloc(sizeof(Lrc_Message)); if(NULL==pNew) { printf("创建节点失败"); exit(-1); } else { pTemp->pNext=pNew; pTemp=pNew;//让pTemp指针始终指向链表的最后节点 pTemp->pNext=NULL; while(0!=fgets(pTemp->H_Lrc,124,p1)) { n=0; p_H_Lrc=pTemp->H_Lrc; p_Time2=pTemp->Time2; p_H_Lrc_N_Time=pTemp->H_Lrc_N_Time; while('\0'!=*p_H_Lrc) { if(*p_H_Lrc!='[')//跳过[ 和]符号的插入 { if(']'==*p_H_Lrc) { n++; *p_Time2='\0';//完成对数组Time2的赋值 } if(n==0) { if(*(p_H_Lrc+2)==':') { minute=(int)(*(p_H_Lrc)-'0')*10+(int)(*(p_H_Lrc+1)-'0'); } if(*(p_H_Lrc+2)=='.') { second=(int)(*(p_H_Lrc)-'0')*10+(int)(*(p_H_Lrc+1)-'0'); } if(*p_H_Lrc=='.') { millisecond=(int)(*(p_H_Lrc+1)-'0')*10+(int)(*(p_H_Lrc+2)-'0'); } *p_Time2=*p_H_Lrc; p_Time2++; } } if(n>0) { *p_H_Lrc_N_Time=*(p_H_Lrc+1); p_H_Lrc_N_Time++; } p_H_Lrc++; } pTemp->Time1=millisecond+minute*60*1000+second*1000; pNew=(P_Lrc_Message)malloc(sizeof(Lrc_Message)); if(NULL==pNew) { printf("创建节点失败"); exit(-1); } pTemp->pNext=pNew; pTemp=pNew;//让pTemp指针始终指向链表的最后节点 } } } pTemp->pNext=NULL; return pHead;}VC6.0完整工程下载百度网盘下载:点我下载
0 0
- C语言动态链表 取MP3歌词文件内容 带VC6.0完整工程
- VC6.0播放MP3文件
- 【C语言】使用VC6.0创建C工程
- C语言 解析lrc歌词文件
- VC6.0工程文件清理
- C语言读取mp3文件的信息
- VC6.0 设置动态链接库工程生成dll以及lib文件的位置
- C语言动态数组的完整实现
- C语言动态数组的完整实现
- VC6 工程文件简介
- 链表操作程序(完整)C语言
- vc6.0读取xml文件中的内容
- c语言获取文件内容
- C语言读取文件内容
- MP3制作之LRC歌词文件解析(附:源代码)
- 2014-03-31工作日志:VC6.0 设置动态链接库工程生成dll以及lib文件的位置
- 动态链表的增删改查,打印销毁等基本操作及代码模块化(完整C语言代码!)
- c语言 读取文件内容 文件写入
- C#访问URL方法
- BZOJ 1208
- 【小细节】让sublime2可以在终端中打开
- Render to Texture2DArray slices in DirectX11?(转自GAMEDEV)
- 【marks】web前端资源
- C语言动态链表 取MP3歌词文件内容 带VC6.0完整工程
- PAT (Advanced) 1041. Be Unique (20)
- 视频软件的频道列表的英文名称
- 说说MD5加密解密这玩意儿
- android4.2源码编译调试出错
- Has the sum exceeded hdu 2116 很不错的数学题目
- Cocos2d设置精灵触摸范围
- oracle pl sql %type
- 九度:1444<效率很重要>