国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

C語言音樂播放器實例代碼

2020-01-26 13:41:01
字體:
來源:轉載
供稿:網友

實例代碼如下:

#include <stdio.h>#include<dirent.h>#include<stdlib.h>#include<unistd.h>#include<string.h>typedef struct node_ node_t;struct node_{ char* name;//gequming node_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/pause/n"); printf("2. next/n"); printf("3. prev/n"); printf("4. stop/n"); printf("5. exit/n"); printf("**************************************/n"); list_show(); int choose =4; do{  printf(" > "); scanf("%d",&choose); if(choose>=0&&choose<=4) break; printf("choose invalid/n"); 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("%s/n",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;}

實例效果圖片如下:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 年辖:市辖区| 通道| 林口县| 侯马市| 克东县| 广德县| 小金县| 庆城县| 石景山区| 长沙县| 高邮市| 平陆县| 伊宁县| 西贡区| 邹平县| 莱西市| 云林县| 海盐县| 敦化市| 阜新| 天全县| 融水| 安顺市| 三穗县| 滦平县| 广平县| 即墨市| 惠东县| 上虞市| 筠连县| 晋江市| 华阴市| 鸡泽县| 革吉县| 武乡县| 保山市| 石门县| 义乌市| 渭南市| 嫩江县| 溆浦县|