精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何編寫 C 程序在 Linux 上創(chuàng)建音樂播放列表

系統(tǒng) Linux
我最近在 Linux 中編寫了一個 C 程序,從我廣泛的 MP3 庫中創(chuàng)建一個較小的隨機 MP3 文件選集。該程序會遍歷一個包含我的 MP3 庫的目錄,然后創(chuàng)建一個包含隨機的、較小的歌曲選集的目錄。

使用我在 Linux 上制作的這個 C 程序在旅途中聆聽你喜愛的歌曲。

我最近在 Linux 中編寫了一個 C 程序,從我廣泛的 MP3 庫中創(chuàng)建一個較小的隨機 MP3 文件選集。該程序會遍歷一個包含我的 MP3 庫的目錄,然后創(chuàng)建一個包含隨機的、較小的歌曲選集的目錄。然后我將這些 MP3 文件復(fù)制到我的智能手機上,以便隨時隨地收聽。

瑞典是一個人口稀少的國家,有許多農(nóng)村地區(qū)沒有完整的手機覆蓋。這就是在智能手機上擁有 MP3 文件的原因之一。另一個原因是我并不總是有錢購買流媒體服務(wù),所以我喜歡擁有自己喜歡的歌曲的副本。

你可以從它的 Git 倉庫 下載我的應(yīng)用。我專門為 Linux 編寫了它,部分原因是在 Linux 上很容易找到經(jīng)過良好測試的文件 I/O 例程。多年前,我嘗試使用專有的 C 庫在 Windows 上編寫相同的程序,但在嘗試文件復(fù)制時遇到了困難。Linux 使用戶可以輕松直接地訪問文件系統(tǒng)。

本著開源的精神,我沒費多少力氣就找到了 Linux 的文件 I/O 代碼來激發(fā)我的靈感。我還發(fā)現(xiàn)了一些啟發(fā)了我的分配內(nèi)存的代碼。我編寫了隨機數(shù)生成的代碼。

該程序的工作方式如下所述:

  1. 詢問源目錄和目標目錄。
  2. 詢問存放 MP3 文件的目錄下的文件個數(shù)。
  3. 搜索你希望復(fù)制的收藏的百分比(從 1.0% 到 88.0%)。如果你有 1000 個文件的集合,并希望從你的集合中復(fù)制 125 個文件而不是 120 個文件,你也可以輸入 12.5% 之類的數(shù)字。我將上限設(shè)置為 88%,因為復(fù)制超過 88% 的庫將基本生成與你的基礎(chǔ)庫相似的庫。當(dāng)然,代碼是開源的,因此你可以根據(jù)自己的喜好自由修改。
  4. 使用指針和malloc 分配內(nèi)存。一些操作需要內(nèi)存,包括代表音樂收藏中文件的字符串列表。還有一個列表來保存隨機生成的數(shù)字。
  5. 生成所有文件范圍內(nèi)的隨機數(shù)列表(例如,如果集合有 1000 個文件,則為 1 到 1000)。
  6. 復(fù)制文件。

其中一些部分比其他部分更簡單,但代碼只有大約 100 行:

    #include <dirent.h>
#include <stdio.h>
#include <string.h>
#include <sys/types.h> /* include necessary header files */
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
#define BUF_SIZE 4096 /* use buffer of 4096 bytes */
#define OUTPUT_MODE 0700 /*protect output file */
#define MAX_STR_LEN 256
int main(void) {
DIR *d;
struct dirent *dir;
char strTemp[256], srcFile[256],
dstFile[256], srcDir[256], dstDir[256];
char **ptrFileLst;
char buffer[BUF_SIZE];
int nrOfStrs=-1, srcFileDesc,
dstFileDesc, readByteCount,
writeByteCount, numFiles;
int indPtrFileAcc, q;
float nrFilesCopy;
// vars for generatingRandNumList
int i, k, curRanNum, curLstInd,
numFound, numsToGen, largNumRange;
int *numLst;
float procFilesCopy;
printf("Enter name of source Directory\n");
scanf("%s", srcDir);
printf("Enter name of destionation Directory\n");
scanf("%s", dstDir);
printf("How many files does the directory with mp3 files contain?\n");
scanf("%d", &numFiles);
printf("What percent of the files do you wish to make a random selection of\n");
printf("enter a number between 1 and 88\n");
scanf("%f", &procFilesCopy);
// allocate memory for filesList, list of random numbers
ptrFileLst= (char**) malloc(numFiles * sizeof(char*));
for (i = 0; i < numFiles; i++) {
ptrFileLst[i] = (char*)malloc(MAX_STR_LEN * sizeof(char));
}

largNumRange = numFiles;
nrFilesCopy = (procFilesCopy / 100) * numFiles;
numsToGen = (int)((procFilesCopy / 100) * numFiles);
printf("nrFilesCopy=%f", nrFilesCopy);
printf("NumsToGen=%d", numsToGen);
numLst = malloc(numsToGen * sizeof(int));
srand(time(0));
numLst[0] = rand() % largNumRange + 1;
numFound=0;
do {
curRanNum = (int)rand() % largNumRange + 1;
if (numLst[0] == curRanNum) {
numFound=1;
}
} while(numFound == 1);
numLst[1] = curRanNum;
getchar();
curLstInd = 1;
i = 0;
while(1) {
do {
numFound = 0;
curRanNum = (int)rand() % largNumRange + 1;
for (int k = 0; k <= curLstInd; k++){
if (numLst[k] == curRanNum)
numFound = 1;
}
} while(numFound == 1);
numLst[curLstInd+1] = curRanNum;
curLstInd++;
i++;
// numsToGen=Total numbers to generate minus two
// already generated by the code above this loop
if (i == (numsToGen-2))
break;
}
d = opendir(srcDir);
if (d) {
while ( (dir = readdir(d)) != NULL ) {
strcpy(strTemp, dir->d_name);
if (strTemp[0] != '.') {
nrOfStrs++;
strcpy(ptrFileLst[nrOfStrs], strTemp);
}
}
closedir(d);
}
for (q = 0; q <= curLstInd; q++) {
indPtrFileAcc = numLst[q];
strcpy(srcFile, srcDir);
strcat(srcFile, "/");
strcat(srcFile, ptrFileLst[indPtrFileAcc]);
strcpy(dstFile, dstDir);
strcat(dstFile, "/");
strcat(dstFile, ptrFileLst[indPtrFileAcc]);

srcFileDesc = open(srcFile, O_RDONLY);
dstFileDesc = creat(dstFile, OUTPUT_MODE);
while(1) {
readByteCount = read(srcFileDesc, buffer, BUF_SIZE);
if (readByteCount <= 0)
break;

writeByteCount = write(dstFileDesc, buffer, readByteCount);
if(writeByteCount <= 0)
exit(4);
}
//close the files
close(srcFileDesc);
close(dstFileDesc);
}
}

這段代碼可能是最復(fù)雜的:

    while(1) {
readByteCount = read(srcFileDesc, buffer, BUF_SIZE);
if (readByteCount <= 0)
break;
writeByteCount = write(dstFileDesc, buffer, readByteCount);
if (writeByteCount <= 0)
exit(4);
}

這將從指定的文件中讀取多個字節(jié)(readByteCount)到字符緩沖區(qū)中。該函數(shù)的第一個參數(shù)是文件名(srcFileDesc)。第二個參數(shù)是一個指向字符緩沖區(qū)的指針,這之前在程序中聲明過。該函數(shù)的最后一個參數(shù)是緩沖區(qū)的大小。

程序返回讀取的字節(jié)數(shù)(在本例中為 4 個字節(jié))。如果返回的數(shù)字為 0 或更少,則第一個 if 子句會跳出循環(huán)。

如果讀取字節(jié)數(shù)為 0,則所有寫入完成,循環(huán)中斷以寫入下一個文件。如果讀取的字節(jié)數(shù)小于 0,則發(fā)生錯誤并退出程序。

當(dāng)讀取 4 個字節(jié)時,它會寫入它們。write 函數(shù)接受三個參數(shù)。第一個是要寫入的文件,第二個是字符緩沖區(qū),第三個是要寫入的字節(jié)數(shù)(4 個字節(jié)) .該函數(shù)返回寫入的字節(jié)數(shù)。

如果寫入了 0 個字節(jié),則發(fā)生了寫入錯誤,因此第二個 if 子句退出程序。

while 循環(huán)讀取并復(fù)制文件,一次 4 個字節(jié),直到文件被復(fù)制。復(fù)制完成后,你可以將隨機生成的 mp3 文件的目錄復(fù)制到你的智能手機。

復(fù)制和寫入例程相當(dāng)有效,因為它們使用 Linux 中的文件系統(tǒng)調(diào)用。

改進代碼

該程序很簡單,可以在用戶界面和靈活性方面進行改進。例如,你可以實現(xiàn)一個計算源目錄中文件數(shù)量的函數(shù),這樣你就不必手動輸入它。你可以添加選項,這樣你就可以非交互地傳遞百分比和路徑。但是代碼做了我需要它做的事情,它是 C 編程語言簡單效率的演示。

責(zé)任編輯:未麗燕 來源: Linux中國
相關(guān)推薦

2018-10-08 09:05:26

LinuxM3U播放列表

2011-09-16 15:50:50

TuneBirdsTwitter

2014-09-11 10:33:06

Linux

2022-06-19 14:23:56

Linux

2022-07-26 10:13:11

LinuxGNOMERhythmbox

2010-09-02 08:48:58

蘋果新款播放列表功能

2022-01-05 09:33:03

Windows 11操作系統(tǒng)微軟

2020-12-21 20:25:24

UbuntuDebian LinuC 程序

2022-03-06 20:24:50

音樂播放器Juk開源

2016-02-16 09:36:37

CrossOverLinuxWindows

2010-10-26 09:00:48

Winamp應(yīng)用

2017-02-06 18:42:37

Linuxgdb程序

2011-01-10 18:21:38

linux編寫程序

2011-01-28 09:12:53

jQuery Mobi

2020-05-09 12:01:40

Linux開源軟件SDN

2013-06-26 09:53:29

2018-09-30 10:18:44

Linux 文件系統(tǒng)目錄

2022-08-17 17:18:02

Sunamu開源

2009-12-17 15:10:31

Linux音樂播放器

2009-08-18 11:16:05

Ubuntu系統(tǒng)高清視頻linux系統(tǒng)
點贊
收藏

51CTO技術(shù)棧公眾號

亚洲国产中文字幕| 日本欧美三级| 亚洲三级在线播放| 国内精品久久久久久久果冻传媒| 五月婷婷视频在线| 97人人精品| 亚洲国产成人久久综合| 我看黄色一级片| 女子免费在线观看视频www| 99热这里都是精品| 国产精品羞羞答答| 圆产精品久久久久久久久久久| 狠狠做深爱婷婷综合一区| 日韩亚洲欧美一区| 黑森林精品导航| av中文字幕在线观看第一页| 国产精品日韩成人| 美女主播视频一区| 午夜免费福利视频| 人禽交欧美网站| 91精品国产色综合| 老妇女50岁三级| 成人高清电影网站| 日韩精品极品视频| 最新国产精品自拍| 亚洲精品tv| 91国产免费观看| 浮妇高潮喷白浆视频| 影音先锋男人资源在线| 中文字幕av一区二区三区免费看| 精品久久久久久中文字幕动漫 | 欧美精品一二三区| 国模杨依粉嫩蝴蝶150p| 黄色在线网站噜噜噜| 一区二区在线免费观看| 一级一片免费播放| 国产在线三区| 久久久午夜精品理论片中文字幕| 国产精选在线观看91| 国产伦一区二区| 精品一区二区三区免费观看| 国产精品手机播放| 精品国产www| 日韩精品国产精品| 国产精品久久久久久av下载红粉| 天堂网中文字幕| 久久aⅴ乱码一区二区三区| 韩日精品中文字幕| 日本在线免费观看| 中文一区二区| 亚洲精品中文在线| 欧美一级理论性理论a| 九热视频在线观看| 欧美日韩五区| 欧美影片第一页| 天堂av在线网站| 亚洲国产91视频| 欧美一区二区美女| 特黄特黄一级片| 成人av动漫| 日韩国产欧美区| 精品无码国产污污污免费网站 | 最新国产一区二区| 亚洲电影免费观看高清| 三级视频网站在线观看| 女厕嘘嘘一区二区在线播放| 亚洲午夜av久久乱码| 成人做爰69片免网站| 日韩精品一区二区三区免费观看| www.欧美精品| 欧美毛片在线观看| 在线观看不卡| 国产精品video| 国产又粗又猛视频免费| 国产精品一区二区久久不卡| 国产伦精品一区二区三区视频孕妇| 污视频在线免费观看| 国产偷国产偷亚洲高清人白洁| 午夜免费电影一区在线观看| 黄网站在线免费看| 亚洲成在线观看| 青青在线视频免费| www 久久久| 亚洲激情在线观看| 在线看片中文字幕| 国产精品www.| 国产成人在线视频| 99精品久久久久久中文字幕| 成人97人人超碰人人99| 性欧美精品一区二区三区在线播放 | 亚洲免费高清视频在线| 久久av高潮av| 深夜成人影院| 日韩一二在线观看| 久久美女免费视频| 欧美日韩亚洲国产精品| 国产97在线观看| 国产99视频在线| 久久久www成人免费毛片麻豆| 国产免费xxx| 日韩av超清在线观看| 日韩一级高清毛片| 精品人妻中文无码av在线| 伊人天天综合| 成人性生交大片免费观看嘿嘿视频| 秋霞欧美在线观看| 国产精品女上位| 免费毛片网站在线观看| 香蕉久久久久久| 亚洲人成电影在线观看天堂色| 麻豆疯狂做受xxxx高潮视频| 日本中文一区二区三区| 国内一区二区三区在线视频| 国产日产一区二区三区| 91久久精品一区二区| 青青草视频网站| 在线中文字幕亚洲| 国产精品视频公开费视频| 天天干视频在线观看| 亚洲精品成人精品456| 嫩草影院国产精品| 九九热线有精品视频99| 韩剧1988免费观看全集| 亚洲av无码一区二区三区性色| 国产精品免费久久久久| 日本成人黄色网| 亚洲va久久| 91精品国产91久久久久福利| 亚洲经典一区二区| 亚洲免费观看高清在线观看| 狠狠操狠狠干视频| 色135综合网| 国产精品久久久久久影视| 欧美一区二区少妇| 精品福利在线视频| 精品国产人妻一区二区三区| 亚洲夜间福利| 国产乱码一区| 国产伦理精品| 亚洲电影第1页| 91午夜视频在线观看| 99久久99久久久精品齐齐| 国产曰肥老太婆无遮挡| 国产精品极品国产中出| 久久久久久久999| 亚洲第一页视频| 一区二区国产盗摄色噜噜| 国产裸体视频网站| 欧美午夜一区| 国产美女99p| caoporn视频在线| 亚洲精品999| 国产精品视频123| 久久久久88色偷偷免费| 丰满少妇在线观看| 91视频综合| 91久色国产| 高潮在线视频| 亚洲人成在线免费观看| 国模私拍一区二区| 中文字幕一区av| 台湾佬美性中文| 亚洲福利免费| 日本高清不卡三区| 激情久久一区二区| 色久欧美在线视频观看| 国产视频www| 午夜欧美视频在线观看| 国产精品久久久久无码av色戒| 日韩电影在线一区| 中国女人做爰视频| 另类在线视频| 国产精品嫩草影院一区二区| dy888亚洲精品一区二区三区| 精品av综合导航| 91黑人精品一区二区三区| 国产精品美女久久久久久 | 不卡电影一区二区三区| 亚洲中文字幕无码不卡电影| 欧美hd在线| 国产精品久久久久久久免费大片| 亚洲欧美韩国| 久久影视免费观看| 婷婷在线观看视频| 欧美三级视频在线观看| 国产香蕉在线视频| 国产日韩三级在线| 粗大的内捧猛烈进出视频| 嫩草成人www欧美| 熟女视频一区二区三区| 色橹橹欧美在线观看视频高清| 国产精品视频地址| 9999热视频在线观看| 中文字幕亚洲一区在线观看| www.中文字幕| 欧美午夜影院一区| 国产精品99精品无码视| 国产精品国产三级国产aⅴ入口 | 国产日韩欧美电影在线观看| 成人女同在线观看| 中文字幕av日韩| 欧美在线 | 亚洲| 555www色欧美视频| 日本视频免费观看| 亚洲国产成人av网| 男人的午夜天堂| 久久精品亚洲一区二区三区浴池| 国产精品一级无码| 国内外成人在线视频| 50路60路老熟妇啪啪| 亚洲性人人天天夜夜摸| 欧美h视频在线观看| 国产精品一区二区av日韩在线 | 天天久久综合网| 日韩av在线发布| 日本毛片在线免费观看| 韩日成人av| 日本在线视频www色| 欧洲视频一区| 欧美日韩一区二区三| 国产+成+人+亚洲欧洲在线| 91在线观看免费网站| 本网站久久精品| 国产99久久精品一区二区 夜夜躁日日躁| 久久av色综合| 久久大大胆人体| 日本在线观看视频| 中文字幕视频在线免费欧美日韩综合在线看 | 日本一区二区三区四区 | 免费观看国产视频| 欧美一区二区三区人| 在线免费观看日韩视频| 91高清视频免费看| www.国产毛片| 色综合天天综合色综合av| 国产精品视频免费播放| 五月天激情综合| 日本天堂网在线观看| 亚洲18色成人| 国产精品第二十页| 亚洲成av人综合在线观看| 久草免费新视频| 亚洲一区二区三区精品在线| 免费人成年激情视频在线观看| 一区二区三区日韩欧美| 黄色片在线观看网站| 亚洲精品国产精华液| 欧美极品视频在线观看| 亚洲综合999| 久久精品国产亚洲av香蕉| 午夜电影一区二区| 特级毛片www| 色999日韩国产欧美一区二区| 波多野结衣影片| 欧美日韩精品一区二区三区四区 | 蜜月aⅴ免费一区二区三区| 99在线视频观看| 久久欧美在线电影| 色是在线视频| 国产精品一区二区女厕厕| 日韩一区二区三免费高清在线观看| 91久久国产精品91久久性色| 亚洲国产aⅴ精品一区二区| 国产一区二区三区无遮挡 | 老汉色影院首页| 尤物网精品视频| 欧美污视频网站| 老司机精品视频在线| 男男受被啪到高潮自述| 99国产精品久久久久久久久久| 久久成人激情视频| 亚洲天堂成人网| 日本熟妇色xxxxx日本免费看| 在线精品观看国产| 国产人妻精品一区二区三| 精品福利av导航| av资源种子在线观看| 欧美成人精品三级在线观看| 是的av在线| 国产裸体写真av一区二区| julia中文字幕一区二区99在线| 久中文字幕一区| 91视频精品| 日韩欧美精品在线观看视频| 激情综合亚洲精品| 一本加勒比波多野结衣| 国产精品高清亚洲| 日韩欧美性视频| 欧美高清性hdvideosex| 天堂av在线免费| www.亚洲人.com| 在线手机中文字幕| 91最新在线免费观看| 免费看成人哺乳视频网站| 视色,视色影院,视色影库,视色网| 国产麻豆综合| 色哟哟免费视频| 国产日韩欧美高清| 国产一级大片在线观看| 欧美三级在线播放| 亚州av在线播放| 欧美另类xxx| 欧美日韩在线精品一区二区三区激情综合| 99国产盗摄| 99久久激情| 成年人在线看片| 成人av网在线| 精品国产欧美日韩不卡在线观看| 在线亚洲一区二区| 天堂网在线观看视频| 欧美成人激情视频免费观看| 欧美午夜三级| 麻豆精品传媒视频| 亚洲第一伊人| 一级全黄裸体片| 亚洲婷婷综合久久一本伊一区 | 亚洲国产天堂久久国产91| 日本中文字幕在线2020| 日韩av色在线| 亚洲第一二三区| 毛片在线播放视频| 国产成人av电影在线观看| 99鲁鲁精品一区二区三区| 欧美亚洲动漫制服丝袜| 深夜福利在线观看直播| 久久免费视频网| 最新精品在线| 日本福利视频网站| 国产精品综合一区二区三区| 国产精品夜夜夜爽阿娇| 欧美另类久久久品| 国产午夜精品一区理论片| 日韩av不卡在线| 免费成人结看片| 免费男同深夜夜行网站| 久久天天做天天爱综合色| 人人干人人干人人干| 亚洲激情国产精品| jizzjizz中国精品麻豆| 国产伦精品一区二区三区四区免费 | 91福利免费观看| 1000精品久久久久久久久| 91av久久久| 美女国内精品自产拍在线播放| 国产精品视频一区二区三区| gogogo免费高清日本写真| 国产一区不卡在线| 国产这里有精品| 精品国产成人在线影院| 交100部在线观看| 欧美精品国产精品久久久 | 国产精品www.| 污污污www精品国产网站| 黄色成人av网| 国产日本在线| 国产日本欧美视频| 亚洲激情中文| 秘密基地免费观看完整版中文| 精品国产91久久久久久| 国产视频网站在线| 成人黄色在线免费| 午夜久久美女| 亚洲图片欧美激情| 婷婷丁香综合网| 91精品欧美综合在线观看最新| 黄色网在线免费观看| 国产高清精品一区| 亚洲av成人无码久久精品老人 | 中文字幕第24页| 欧美羞羞免费网站| 岛国成人毛片| 国产欧美在线一区二区| 久久亚洲风情| 日本不卡一二区| 亚洲电影在线观看| 国内精品伊人| 国产一区二区四区| 久久久久久久综合色一本| 97国产成人无码精品久久久| 久久久久久国产三级电影| 精品久久网站| 噜噜噜狠狠夜夜躁精品仙踪林| 久久久久久久香蕉| 久久伊人中文字幕| 国产一区二区三区四区视频 | 久久久999| 国产wwwwxxxx| 亚洲第一网中文字幕| 成人免费毛片嘿嘿连载视频…| 亚洲天堂第一区| 久久精品视频在线免费观看| 国产三级漂亮女教师| 69av视频在线播放| 天天综合久久| 亚洲一级中文字幕| 日韩美女一区二区三区| 国精产品一区一区三区四川| 日本一级黄视频| 国产精品人妖ts系列视频| 神马亚洲视频|