C語言 LRC歌詞檔案解析

來源:互聯網
上載者:User
相顧無言,唯有貼代碼,請上眼:
#include <stdio.h>#include <string.h>#include <assert.h>#define STRLEN 256//只是去掉時間標記char *parse_lrc_line(char *line){char *p = NULL;p = strrchr(line,']');if(p == NULL){goto END;}p = p + 1;END:return p;}//在其中解析包含時間標籤的LRC檔案的字串,並輸出到stdout,略微修改即具有實用價值(編碼還是要改的)void parse_lrc_line2(char *line){char *p = NULL;char *right = NULL;char *left = NULL;char buff[STRLEN] = {0};char *p2 = NULL;int n;p = line;//left為左邊的[所在的位置left = strchr(p,'[');if (left == NULL){return ;}//right為右邊的]所在的位置right = strchr(p,']');while(right != NULL && left != NULL){n = right - left - 1;strncpy(buff,left + 1,n);puts(buff);p2 = strrchr(p,']');if (p2 != NULL){p2++;puts(p2);}//可以在這裡儲存歌詞和時間標籤資訊,此時時間標籤為buff,歌詞內容為p2//這裡把buff清空為\0。。反正總歸要清空的,這樣就不用計算字串長度再補\0了memset(buff,'\0',n);p = right;//strchr函數只向後尋找,把這段字串劃分成兩個*p = '\0';p = p + 1;left = strchr(p,'[');if (left == NULL){continue;}right = strchr(p,']');}}int main(){FILE *f = NULL;char line[STRLEN] = {0};f = fopen("qclg.lrc","r");assert(f);while(fgets(line,STRLEN,f)){//parse_lrc_line是去標籤的printf(parse_lrc_line(line));}rewind(f);//讀取每一行,並在其中解析while(fgets(line,STRLEN,f)){//每行解析一次parse_lrc_line2(line);}getchar();fclose(f);}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.