学会在Linux环境下用c语言多文件制作lrc歌词解析器

本文介绍了一个使用链表和Linux基本命令实现的歌词播放器项目。通过链表组织歌词与时间戳,实现歌词的实时显示。文章详细讲解了代码实现过程,包括链表的构建与排序、歌词与时间的解析以及Linux命令的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果:
在这里插入图片描述

需要掌握的知识

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文件长成这样…

在这里插入图片描述
大致思想是…

  1. 将歌词与时间切割出来
  2. 用链表使其一句歌词对应一个时间
  3. 设置时钟函数记录时间
  4. 最后清屏加时间延迟以及效果显示

下面是代码:

//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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值