LRC 格式:[mm:ss.xx]歌詞內容。本實現讀取文件,解析標題/歌手,逐行提取時間戳與歌詞,按時間同步打印。
] 截斷)。0 開頭([00:...])。mm:ss.xx 為總毫秒數 time。sleep 等待至下一行時間點(簡易同步)。FILE *fp = fopen("/path/to/song.lrc", "r");
char line[1000];
long time = 0, elapsed = 0;
// 讀歌名、歌手(略)
while (fgets(line, sizeof(line), fp)) {
if (line[1] != '0') continue; // 跳過非歌詞行
// 解析 [mm:ss.xx]
time = (line[1]-'0')*60000 + (line[2]-'0')*6000
+ (line[4]-'0')*1000 + (line[5]-'0')*100
+ (line[7]-'0')*10 + (line[8]-'0')*1;
printf("%s", &line[10]); // 打印歌詞
while (elapsed < time) { sleep(1); elapsed += 100; } // 簡易同步
}
fclose(fp);
sleep(1) 粒度太粗,建議用 usleep 或高精度定時器。[mm:ss]、[mm:ss.xxx]、[offset] 等變體。NSString、NSScanner、dispatch_after 等 Foundation API。