12345

int Id3v2Tag::WriteTextToMp3(int id,char *pText)
{
 FRAMELIST *node =(FRAMELIST *) malloc(sizeof(FRAMELIST)) ;
 memset(node,0,sizeof(FRAMELIST));
 node->frameID = id;
 strncpy(node->frame.FrameID,id3v2Label[id],4);
 char *newcontent = (char *)malloc(strlen(pText)+2);
 if(newcontent == NULL)return -1;
 newcontent[0]=0;
 strncpy(newcontent+1,pText,strlen(pText));
 node->frameSize = strlen(pText)+1;
 CalceFrameSize(strlen(pText)+1,node->frame.Size);
 node->content=newcontent;

 int flag=0;
 FRAMELIST *pTemp = NULL;
 if(m_pFrameList == NULL)//没有结点
 {
  memset(&m_stHeader,0,sizeof(m_stHeader));
  strncpy(m_stHeader.Header,"ID3",3);
  m_stHeader.Ver = 04;
  m_headerSize=0; 

 }
 else
 {
  m_pTemp=m_pFrameList;
  while(m_pTemp != NULL)
  {
   if(m_pTemp->frameID == id)
   {
    flag = 1;
    break;
   }
   pTemp=m_pTemp;
   m_pTemp=m_pTemp->pNext;
  }
 }
 if(flag == 1)
 {
  node->pNext=m_pTemp->pNext;
  pTemp->pNext = node;
  free(m_pTemp->content);
  free(m_pTemp);
 }
 else
 {
  if(m_pFrameList == NULL)
  {
   m_pFrameList=node;
  }
  else
  {
   node->pNext=m_pFrameList;
   m_pFrameList=node;
  }
 }
 FILE *oldfp,*newfp;
 oldfp = fopen(m_pFileName,"rb");
 fseek(oldfp,0L,SEEK_END);
 int oldfilelen=ftell(oldfp);
 fseek(oldfp,m_headerSize,SEEK_SET);
 char *oldfile = (char *)malloc(oldfilelen-m_headerSize);
 fread(oldfile,oldfilelen-m_headerSize,1,oldfp);
 fclose(oldfp);
 int headlen=0;
 pTemp = m_pFrameList;
 while(pTemp != NULL)
 {
  headlen+=10;
  headlen+=pTemp->frameSize;
  pTemp = pTemp->pNext;
 }
 CalcHeadSize(headlen,m_stHeader.Size);
 newfp = fopen("aaa.mp3","wb");
 fwrite(&m_stHeader,sizeof(m_stHeader),1,newfp);
 pTemp = m_pFrameList;
 while(pTemp != NULL)
 {
  fwrite(&pTemp->frame,sizeof(FRAME),1,newfp);
  fwrite(pTemp->content,pTemp->frameSize,1,newfp);
  pTemp= pTemp->pNext;
 }
 fwrite(oldfile,oldfilelen-m_headerSize,1,newfp);
 fclose(newfp);
 // remove(m_pFileName);
 // rename("aaa.mp3",m_pFileName);
 free(oldfile);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值