2023年7月11日发(作者:)
linux纯c语⾔编写的⾳乐播放器,C语⾔⾳乐播放器实例代码实例代码如下:#include#include#include#include#includetypedef struct node_ node_t;struct node_{char* name;//gequmingnode_t * prev;node_t * next;};node_t *head = NULL;int first=1;//diyicibofnagnode_t * cur =NULL;//dangqianbofangenum{STOP,PAUSE,PLAY};int status = STOP;void List_init(void){head = malloc(sizeof(node_t));memset(head,0x00,sizeof(node_t));head->next = head->prev=head;}void list_insert(const char* name){node_t *p = malloc(sizeof(node_t));memset(p,0x00,sizeof(node_t));p->name = malloc(strlen(name)+1);strcpy(p->name,name);p->next = head->next;p->prev = head;head->next->prev = p;head->next = p;}int menu(void){printf("*************menu************************n");printf("1. play/pausen");printf("2. nextn");printf("3. prevn");printf("4. stopn");printf("5. exitn");printf("**************************************n");list_show();int choose =4;do{printf(" > ");scanf("%d",&choose);if(choose>=0&&choose<=4)break;printf("choose invalidn");while(getchar()!='n');}while(1);return choose;}void list_show(void){node_t *p = head->next;while(p!=head){printf("%s ",p->name);if(p==cur)printf("<<==cur");printf("n");p = p->next;}}void load_music(const char * path){DIR * pdir = opendir(path);if(pdir == NULL){perror("opendir");exit(1);}struct dirent * p = NULL;while((p=readdir(pdir))!=NULL){if(p->d_name[0]=='.')continue;list_insert(p->d_name);}closedir(pdir);}void playPause(){if(first==1){char buf[1024] = {};sprintf(buf,"madplay -o wav:- ./music/Music/%s 2> /dev/null | aplay 2>/dev/null &",cur->name);system(buf);first = 0;status = PLAY;}else{if(status==PLAY){system("killall -SIGSTOP aplay");status = PAUSE;}else if(status==PAUSE){system("killall -SIGCONT aplay");status = PLAY;}}}void stop(){system("killall -SIGKILL aplay");first=1;}void next(){stop();cur = cur ->next;if(cur==head){cur = cur->next;}playPause();}void prev(){stop();cur = cur->prev;if(cur==head){cur= cur->prev;}playPause();}int main(int args,char * argv[]){List_init();load_music("./music/Music");if(head->next!=head)cur = head->next;//printf("%sn",cur->name);//list_show();do{int choose = menu();switch(choose){case 1:playPause();break;case 2:next();break;case 3:prev();break;case 4:stop();break;case 0:printf("thanks");system("killall -SIGKILL aplay");exit(0);break;default:break;//do nothing;}}while(1);return 0;}实例效果图⽚如下:
发布者:admin,转转请注明出处:http://www.yc00.com/news/1689065502a202208.html
评论列表(0条)