效果:
需要掌握的知识
1. 链表的熟悉运用。
懂得在链表的插入,排序。
2. 学会Linux下基本命令指令。
sudo apt-get install vim //下载vim
sudo apt-get install gcc //下载编译软件gcc
ls //查看当前目录下的文件
cd Desktop/ (Tab 会自动补全唷) //进入桌面
vim main.c //编辑main.c文件
进入vim后点击i进入编辑模式
按下Esc后,点击’Shift‘+ ‘;’ ,输入wq 即可保存
gcc main.c other.c other.h -o main
//把main.c 与other.c 与other.h 文件 编译成main可执行文件
./main //运行文件
基本思想
一般的lrc文件长成这样…
大致思想是…
- 将歌词与时间切割出来
- 用链表使其一句歌词对应一个时间
- 设置时钟函数记录时间
- 最后清屏加时间延迟以及效果显示
下面是代码:
//other.h文件
#ifndef __OTHER_H__ //防止重定义格式
#define __OTHER_H__
struct lrc {
//定义一个链表串起时间和歌词
int time; //时间
char lrc_buf[200]; //歌词
int lrc_num; //第几句歌词
struct lrc *next; //链表的指针
};
typedef struct lrc LRC; //结构体重定义
extern char *open_file(); //打开文件函数
extern int strtok_deal(char *f, char **song_line); //歌词切割函数
extern void four_deal(char **song_line, char *four[50]); //对于前四行特殊处理
extern LRC *init(); //确定链表头指针
extern void insert(LRC *p, LRC **head);
extern LRC *divide_deal(char **song_line, int n); //分开时间与歌词
extern void time_delay(int sec); //时间延迟
extern void set_fg_color(int color); //设置前景颜色
extern void clear_screen(void); //清屏函数
extern void set_bg_color(int color); //设置背景颜色
extern void song_print(LRC *head, char **four); //歌词打印+效果
#endif
//other.c
#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include"other.h"
char *open_file(){
FILE *fp;
fp = fopen("love.lrc", "rb");
if(fp == NULL) {
printf("NULL!\n");
return 0;
}
fseek(fp, 0L, SEEK_END)