#include...DIR *dp ; struct dirent *dirp ;while( ( dirp = readdir( dp ) ) != NULL) { //跳過(guò)'.'和'..'兩個(gè)目錄 if(strcmp(dirp->d_name,".")==0 || strcmp(dirp->d_name,"..")==0) continue; int size = strlen(dirp->d_name); //如果是.wav文件,長(zhǎng)度至少是5 if(size<5) continue; //只存取.mp3擴(kuò)展名的文件名 if(strcmp( ( dirp->d_name + (size - 4) ) , ".mp3") != 0) continue; printf("%s\n", drip->d_name);}始終看不懂的是它怎么就保存下來(lái)了后綴名是.mp3的文件?
1 回答

RISEBY
TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個(gè)贊
關(guān)鍵是這句:dirp->d_name + (size - 4)
dirp->d_name是一個(gè)字符指針,假如現(xiàn)在有 "abc.mp3",
dirp->d_name則指向'a',dirp->d_name+1指向'b'...,那么此時(shí)size=strlen("abc.mp3")=7,
dirp->d_name+(7-4)=dirp->d_name+3,dirp->d_name+3指向'.',
此時(shí)dirp->d_name+3指向字符串".mp3".然后就去跟常量字符串".mp3"比較,如果不相同就執(zhí)行下一次循環(huán)
- 1 回答
- 0 關(guān)注
- 545 瀏覽
添加回答
舉報(bào)
0/150
提交
取消