所有,查找文件擴展名的目錄
我是新的C++,所以我可能不會尋找合適的功能,術語等等我使用的getopt得到命令行參數。這些參數是本地驅動器上的目錄。執行代碼時,我希望它在該目錄中查找特定的文件擴展名。當它找到擴展名時,我會對該文件執行一些操作,重命名該文件,然後將該文件複製到另一個位置。我堅持試圖找到文件擴展名。據顯示在目錄中的所有文件,我已經得到了:
main.cpp中:
int opt = 0;
/* If the argument count passes, check for all arguments */
while ((opt = getopt(argc, argv, "b:m:o:Hh")) != EOF) {
switch(opt) {
case 'b':
dirCopyEvent(optarg);
break;
dirCopyEvent.cpp:
void dirCopyEvent(char *fileToFind) {
cout << "You chose the directory " << fileToFind << endl;
DIR *d;
struct dirent *dir;
char *extension;
extension = strchr(dir->d_name, '.txt');
d = opendir(fileToFind);
if (d != NULL) {
while ((dir = readdir(d))) {
cout << "Filename is " << dir -> d_name << endl;
}
的dirCopyEvent從主調用。我知道我需要爲文件名解析d_name,然後以某種方式找到擴展名,但這是我迷路的地方。任何幫助是極大的讚賞!
- 編輯* 我想補充一個例子:
我有一個名爲Test目錄。在該目錄中,我有3個文件:test1.txt anothertest.txt yetanothertest.bat
我想只能顯示test1.txt和anothertest.txt的結果,但不能顯示yetanothertest.bat。當我在名字中找到txt擴展名時,我希望能夠將它傳遞給另一個函數來處理它。
謝謝!
我把這個在我的代碼(上面編輯),但我怎麼現在驗證該擴展名實際上在目錄中? – Nutrion 2014-10-10 13:42:13
遍歷目錄中的所有文件,並將strchr應用於所需的任何擴展類型。如果返回類型爲空,則搜索到的字符不在文件名中。此外,strchr將搜索一個字符(而不是字符串)和字符串的開頭。 strrchr將從最後搜索。您需要從結尾處搜索擴展名,因爲文件名中也可以包含「點」。檢查這個http://www.cplusplus.com/reference/cstring/strrchr/ – shobhita 2014-10-16 05:55:12