"ti:"
、"ar:"
等來獲取)。
具體實現起來可以有兩種實現方式:
方法一:
使用到的鍊錶:
typedef struct node
linklist;
步驟: 1
,以'\n'
符號將歌詞檔案分成單句並存入鍊錶1中;
2,以']'
符號將單句歌詞分隔成乙個或多個時間標誌和一句歌詞; 3
,擴充歌詞,乙個時間標誌與對應的歌詞連線產生乙個新的字串,存入鍊錶
2的節點中,刪除鍊錶
1,釋放記憶體; 4
,按時間排序,產生新的鍊錶
3,刪除鍊錶
2,釋放記憶體; 5
,對鍊錶
3進行操作,以
']'符號將單句歌詞分成時間標誌和歌詞分別存入鍊錶
timelist
和lyricslist
中,其中時間標誌已轉換成以秒為單位,且此時時間鏈
timelist
和歌詞鍊錶
lyricslist
的節點是一一對應的; 6
,讀時間鍊錶,將當前時間與節點中存放的時間相比較,如果一致則顯示歌詞鍊錶中的對應節點的內容; 7
,釋放記憶體。 例:
[01:59.30][00:21.00]
一場雨把我困在這裡
| |
[01:59.30]
一場雨把我困在這裡
[00:21.00]
一場雨把我困在這裡
| | | |
119
一場雨把我困在這裡
21
一場雨把我困在這裡
如果當前時間
t == 119 ,
則顯示"
一場雨把我困在這裡";
優點:邏輯上比較簡單,容易實現;
缺點:浪費記憶體空間。
方法二:
使用到的鍊錶:
typedef struct node
timelist;
typedef struct node
lyrics;
步驟:
1,從後往前讀存放
.lrc
檔案的buffer
,碰到第乙個
']',產生乙個新的
buffer,
將之前讀的內容存入
buffer
中(即歌詞),產生乙個
lyrics
節點並指向該新產生的
buffer
,初始化
flag為0
; 2,接著往前讀,讀到
'['時,將
'['']'
之間的資料
"xx:xx.xx"
轉換成以秒為單位的時間標誌,產生乙個新的
timelist
節點,time
存放時間節點,
lyrics
指向步驟
1產生的
lyrics
節點,並將
lyircs
節點中的
flag加1
; 3, 重複步驟
2,直至讀到
'\n';
4,重複步驟1,
2,3直至讀完
buffer;
5,將當前時間與
timelist
節點中的
time
比較,如果一致則顯示指向的
lyrics
節點中的歌詞
lyrics;
7,釋放記憶體。
優點:節省記憶體空間,效率比較高
缺點:實現比較複雜,記憶體釋放要注意。 例:
[01:59.30][00:21.00]
一場雨把我困在這裡
time: 119
lyrics:-----------------| |
| flag:2
| lyrics ---
一場雨把我困在這裡 |
time:21 |
lyrics:-----------------|
注意事項: 1.
無論是否在行首,行內凡具有
「[*:*]」
形式的都應認為是標籤。(注意:其中的冒號並非全形字符「:
」) 2.
凡是標籤都不應顯示。 3.
凡是標籤,且被冒號分隔的兩部分都為非負數,則應認為是時間標籤。 4.
因此,對於非標準形式(非
「[mm:ss]」
)的時間標籤也應能識別(如
「[0:0]」)。
5.凡是標籤,且非時間標籤的,應認為是標識標籤。 6.
標識名中大小寫等價。 7.
為了向後相容,應對未定義的新標籤作忽略處理。另應對注釋標籤(
[:])後的同一行內容作忽略處理。 8.
應允許一行中存在多個標籤,並能正確處理。 9.
應能正確處理未排序的標籤。
手機開發實戰117 藍芽介紹1
藍芽介紹 簡介 資訊時代最大的特點便是更加方便快速的資訊傳播,正是基於這一點技術人員也在努力開發更加出色的資訊資料傳輸方式。藍芽技術是一種無線資料與語音通訊的開放性全球規範,它以低成本的近距離無線連線為基礎,為固定與移動裝置通訊環境建立乙個特別連線。其程式寫在乙個 9 x 9 mm的微晶元中。藍芽工...
手機開發實戰164 音訊介紹1
數字音訊基礎 把模擬音訊轉成數字音訊,在電腦 裡就稱作取樣,其過程所用到的主要硬體裝置便是模擬 數字轉換器 analog to digital converter 即adc 取樣的過程實際上是將通常的模擬音訊訊號的電訊號轉換成許多稱作 位元 bit 的二進位製碼0和 1,這些0和 1便構成了數字音訊...
手機開發實戰165 音訊介紹2
音訊編碼標準 mpeg audio layer 3 是 mpeg audio layer 3 的簡稱,是從 mpeg 1 標準衍生的 開放的編碼方案,1993 年由德國夫朗和費研究院和法國湯姆生公司合作發展成功。音訊壓縮技術是一種失真壓縮,其原理是把聲音頻率中人耳幾乎聽不到的音域在音訊中去除,採用高...