日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言如何随机获取1kb,基于VS2010+C语言实现播放器的顺序播放、随机播放

發(fā)布時(shí)間:2023/12/2 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言如何随机获取1kb,基于VS2010+C语言实现播放器的顺序播放、随机播放 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.[文件] music.h?~?920B???? 下載(38)

/*

* File: music.h

* Time: 2014/10/11

*/

#ifndef __MUSIC_H__

#define __MUSIC_H__

typedef enum { UNPLAYED, PLAYED } BOOL; // 自定義一個(gè)bool類型

typedef enum { ORDER, RANDOM } PLAY_MODEL; // 自定義一個(gè)播放類型

typedef char *MUSIC_NAME; // 歌曲名

typedef MUSIC_NAME *MUSIC_NAME_TAB; // 歌曲名表

#define MUSIC_NAME_SIZE 60

typedef struct _music_ {

char str[MUSIC_NAME_SIZE];

BOOL isPlayed; // 是否被播放過

} MUSIC; // 歌曲 MUSIC == struct _music_

typedef MUSIC *MUSIC_TAB; // 歌曲播放列表 MUSIC_TAB == MUSIC *

void systemInit(void); // 系統(tǒng)初始化,必須在listPlay()之前調(diào)用,且只能調(diào)用一次

void play(const MUSIC_NAME_TAB musNametab, const int musnum, const PLAY_MODEL playModel);

// 按照歌曲名表musNametab播放歌曲;musnum為歌曲數(shù)量;playModel為播放模式;

// playModel:ORDER(按歌曲名稱順序播放) RANDOM(隨機(jī)播放)

#endif

/*

* End of file

*/

2.[文件] music.c?~?4KB???? 下載(33)

/*

* File: music.c

* Time: 2014/10/11

*/

#include "music.h"

#include

#include

#include

#include

#include

static MUSIC_TAB newtab = NULL; // 全局變量,一張經(jīng)過處理(排序/洗牌)的新的歌曲表單

static void playOneMusic(MUSIC mus); // 播放歌曲mus

static MUSIC_TAB orderList(const MUSIC_TAB oldtab, const int musnum); // 獲得新的有序列表

static MUSIC_TAB randomLis(const MUSIC_TAB oldtab, const int musnum); // 獲得新的隨機(jī)列表

static void listPlay(const MUSIC_TAB mustab, int musnum, const PLAY_MODEL playModel); // 按照新表單播放

//==========================================================================================================

// 系統(tǒng)初始化,必須在listPlay()之前調(diào)用,且只能調(diào)用一次

void systemInit(void) {

srand((unsigned int)time(NULL));

}

// 按照歌曲名表musNametab播放歌曲

void play(const MUSIC_NAME_TAB musNametab, const int musnum, const PLAY_MODEL playModel) {

int i;

newtab = (MUSIC_TAB)malloc(sizeof(MUSIC) * musnum);

if (newtab != NULL) {

for (i = 0; i < musnum; i++) { // 裝載歌曲名信息,并清零已播放標(biāo)志

memset(&(newtab[i].str[0]), 0, sizeof(char)*MUSIC_NAME_SIZE);

strcpy(newtab[i].str, musNametab[i]);

newtab[i].isPlayed = UNPLAYED;

}

listPlay(newtab, musnum, playModel);

} else {

fprintf(stderr,"\n Program Running Wrong!\n");

return;

}

}

//==========================================================================================================

static void listPlay(const MUSIC_TAB mustab, int musnum, const PLAY_MODEL playModel) { // 按照新表單播放

//以下注釋部分是最初的錯(cuò)誤代碼

//if (playModel == ORDER) {

//newtab = orderList(mustab, musnum); // 獲得新的有序列表

//} else {

//newtab = randomLis(mustab, musnum); // 獲得新的隨機(jī)列表

//}

//while(--musnum >= 0) {

//playOneMusic(*newtab++);// 播放某一歌曲

//}

//free(newtab);

//以下部分是調(diào)試之后改正的代碼 ========================================

MUSIC_TAB tmp = NULL;

if (playModel == ORDER) {

newtab = orderList(mustab, musnum); // 獲得新的有序列表

} else {

newtab = randomLis(mustab, musnum); // 獲得新的隨機(jī)列表

}

tmp = newtab;

while(--musnum >= 0) {

playOneMusic(*tmp++);// 播放某一歌曲

}

if (newtab != NULL) {

free(newtab);

}

}

static void playOneMusic(MUSIC mus) {

if (mus.isPlayed == UNPLAYED) { // 如果歌曲mus在當(dāng)前循環(huán)尚未播放過

if (mus.str != NULL) {

if (strlen(mus.str) <= 0) { // 歌曲名為空字符串

fprintf(stderr,"\n The file of the song \"%s\" is empty !!!\n");

} else {

printf("\n Start playing the song: "); // 模擬歌曲播放

puts(mus.str);

printf(" ");

putchar('.'); Sleep(500); putchar('.'); Sleep(500); putchar('.');

printf("\n Stop playing the song.\n ");

Sleep(500);

}

} else { // 歌曲名為空

fprintf(stderr,"\n Unfound the song \"%s\" !!!\n", mus.str);

}

}

mus.isPlayed = PLAYED;

}

static MUSIC_TAB orderList(const MUSIC_TAB oldtab, const int musnum) { // 獲得新的有序列表

if (newtab != NULL) { // newtab為全局變量

int i,j;

MUSIC temp;

memcpy(newtab, oldtab, sizeof(MUSIC)*musnum);

// 將newtab[0]~newtab[musnum-1]排序

for (i = 0; i < musnum-1; i++) {

for (j = i+1; j < musnum; j++) {

if (strcmp(newtab[i].str, newtab[j].str) > 0) { // newtab[i]->str > newtab[j]->str

temp = newtab[i];

newtab[i] = newtab[j];

newtab[j] = temp;

}

}

}

return newtab;

} // @ if (newtab != NULL)

// 如果newtab==NULL則不作任何處理,統(tǒng)一由listPlay()處理

}

static int myRand(int len) { //生成一個(gè)[0,len-1]之間的隨機(jī)數(shù)

int iRand;

iRand = rand()%len; // 這就是為什么需要systemInit()的原因

return iRand;

}

#define SWAP(a,b,_t) do { _t t = a; a = b; b = t; } while(0)

static void shuffle(const MUSIC_TAB table, const int musnum) { // 洗牌

int n;

// 將table[0]~table[musnum-1]洗牌

// 具體算法:http://bbs.bccn.net/thread-331122-1-1.html

for (n = musnum; n > 1; --n) {

int i = myRand(n);

SWAP(table[n-1], table[i], MUSIC);

}

}

static MUSIC_TAB randomLis(const MUSIC_TAB oldtab, const int musnum) { // 獲得新的隨機(jī)列表

if (newtab != NULL) { // newtab為全局變量

memcpy(newtab, oldtab, sizeof(MUSIC)*musnum);

shuffle(newtab, musnum);

return newtab;

} // @ if (newtab != NULL)

// 如果newtab==NULL則不作任何處理,統(tǒng)一由listPlay()處理

}

/*

* End of file

*/

3.[文件] playmusic.c?~?1KB???? 下載(30)

/*

* File: playmusic.c

* Time: 2014/10/11

*/

#include "music.h"

#include

// �?��򽻲�?��5��������?�����4��?�򲥷?���

// �?������?�http://music.baidu.com/explore/������?�?���?fm=altg8

#define SONGS_LEN 6

char *Songs[SONGS_LEN] = {

// strlen(������) <= MUSIC_NAME_SIZE ��@ music.h��

// �?�������= NULL

"Moves Like Jagger",

"Love Story",

"Unforgivable Sinner",

"Bad Romance",

"Father And Son",

"Wonderful",

};

int main(void) {

systemInit();

puts("\n Initialize system....");

puts("\n ==== ORDER ==== ");

play(Songs, SONGS_LEN, ORDER);

puts("\n ==== RANDOM ==== ");

play(Songs, SONGS_LEN, RANDOM);

puts("\n ==== ORDER ==== ");

play(Songs, SONGS_LEN, ORDER);

puts("\n ==== RANDOM ==== ");

play(Songs, SONGS_LEN, RANDOM);

puts("\n ==== ORDER ==== ");

play(Songs, SONGS_LEN, ORDER);

puts("\n ==== RANDOM ==== ");

play(Songs, SONGS_LEN, RANDOM);

puts("\n Exit system....\n");

return 0;

}

/*

* End of file

*/

總結(jié)

以上是生活随笔為你收集整理的c语言如何随机获取1kb,基于VS2010+C语言实现播放器的顺序播放、随机播放的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美 日韩 国产 在线观看 | 男女插鸡视频 | 激情小说中文字幕 | 91精品国产高清一区二区三蜜臀 | 伊人热久久 | 91射射| 久久精品三级 | 一本一道人人妻人人妻αv 九一在线视频 | 国产精品一区在线播放 | 亚洲视频在线视频 | 超碰麻豆 | sese视频在线观看 | 小婕子伦流澡到高潮h | 裸体女人a级一片 | 国内毛片毛片毛片毛片 | 想要视频在线 | 亚洲三区在线播放 | 欧美三级在线播放 | 99热首页 | 性大毛片视频 | 欧美日韩123区| 亚洲黄页网站 | 精品国产91久久久久久久妲己 | 国内露脸中年夫妇交换 | 国产香蕉在线视频 | 播播开心激情网 | 爱乃なみ加勒比在线播放 | 精品欧美一区二区三区在线观看 | 精品人妻无码一区二区性色 | 国产精品日本 | 高h调教冰块play男男双性文 | 欧美精品福利视频 | 亚洲黄色网址大全 | 99久久99久久精品免费看蜜桃 | 免费一区二区视频 | 网址你懂的在线 | 国产片在线 | 少妇久久久久久被弄到高潮 | 久草欧美 | 夜夜骑av | 欧美日韩中文字幕 | 色人阁婷婷 | 亚洲手机av | 国产精品一区二区亚洲 | av免费一区| 夜夜操狠狠操 | 亚洲a在线观看 | 成年人午夜视频 | 丝袜人妖 | 久久久久久久久一区 | 亚洲网站在线观看 | 久久综合91| 伊人www22综合色 | xxxxx国产| 深夜视频在线看 | 日本黄色不卡视频 | 亚洲免费在线观看av | 国产欧美激情视频 | 国产一区二区av | 男人看的网站 | 国产九色在线 | 福利在线电影 | 91尤物视频在线观看 | 国产精品成人av久久 | 日韩大片在线免费观看 | 亚洲性视频在线 | 日本一区二区三区视频在线播放 | 一道本不卡视频 | 天天干天天干天天干天天 | 欧美干干 | 蜜桃精品在线观看 | 日日干,夜夜操 | 亚洲AV无码精品国产 | 日日cao | 午夜精品久久久久久久99黑人 | 懂色av中文字幕 | 国产 日韩 欧美 在线 | 国产91av在线| 啪啪免费网站 | 91直接看 | 五月综合激情网 | 超碰97免费| 99久久国| 9色91| 日本少妇影院 | 懂色一区二区二区av免费观看 | 成人毛毛片| 男女啪啪免费看 | 日韩在线视频在线观看 | 国产精品毛片一区二区在线看舒淇 | 91视频看片| av不卡网 | 日韩av网站大全 | 日本少妇喂奶 | 女人av在线 | 亚洲精品国产精品乱码 | 嫩模被强到高潮呻吟不断 | 亚洲午夜精品久久久久久浪潮 | 日韩在线播放一区 |