//mp3.c
#include <stdio.h>
#include "mp3.h"
struct music *current_music;//存储当前播放的是哪一首歌曲
int insert_count = 0;//存放歌曲数
//创建一个头节点
struct music * music_list_creat(void)
{
struct music *mhead = (struct music *)malloc(sizeof(struct music));
if(mhead == NULL)
{
printf("malloc fail\n");
return NULL;
}
//mhead->next = NULL;
//mhead->last = NULL;
//mhead->mname = {0};
memset(mhead,0,sizeof(struct music));
return mhead;
}
//插入一首歌,return the new music address
struct music * music_insert(char *mname,struct music *mlast,struct music *mhead)
{
struct music *newmusic =
(struct music *)malloc(sizeof(struct music));
if( newmusic == NULL )
{
printf("mallo newmusic fail!!\n");
return NULL;
}
insert_count++;
if( insert_count == 1 )
{
mhead->next = newmusic;
strcpy(newmusic->mname,mname);
newmusic->last = mhead;
newmusic->next = mhead;
newmusic->mid = insert_count;
}
else
{
mlast->next = newmusic;
strcpy(newmusic->mname,mname);
newmusic->last = mlast;
newmusic->next = mhead;
newmusic->mid = insert_count;
}
return newmusic;
}
//显示歌单及有几首歌
void show_music_list(struct music *mhead)
{
int i;
struct music *show = mhead;
for(i = 0;i < insert_count;i++)
{
show = show->next;
printf("%d.%s\n",show->mid,show->mname);
}
printf("歌单中有%d首歌\n",insert_count);
}
//遍历给定目录下的.mp3文件,并将它们插入到链表
void scanfc(char *path,struct music *mhead)
{
DIR *dir=NULL;

这是一个基于Linux的MP3播放器实现,通过扫描指定目录下的.mp3文件,将其组织成链表并进行播放控制。包括播放、暂停、下一曲、上一曲、循环播放、单曲循环和随机播放等功能。程序使用madplay进行音频播放,并通过内存映射进行进程间通信。
4687

被折叠的 条评论
为什么被折叠?



