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
原创粉丝点击