2011年3月9日 星期三

C/C++:計算指定資料夾的檔案數

int count_file_num_in_a_folder( char* target_folder ){
    int count=-1;                //檔案的counter
    char szDir[128];           //要讀取的資料夾的位址。 
    WIN32_FIND_DATA FileData;    //指著目前讀取到的File的指標。
    HANDLE hList;                //指著要讀取的資料夾的指標。
    sprintf(szDir, "%s\\*",target_folder );
    if ( (hList = FindFirstFile(szDir, &FileData))==INVALID_HANDLE_VALUE )
        cout<<"No directories be found."<<endl<<endl;
    else {
        while (1) {
            if (!FindNextFile(hList, &FileData)) {
                if (GetLastError() == ERROR_NO_MORE_FILES)
                    break;
            }
            count++;
        }
    }
    FindClose(hList);
    return count;
}
用途:
計算指定資料夾裡的檔案個數。
用法:
/*
char folder_adderss[128]="..\\testing_folder\\";
//testing_folder為指定資料夾的名稱
count_file_num_in_a_folder(folder_address);
*/
附註:
若testing_folder裡面有5個資料夾、3個檔案,則此函式會回傳5+3=8。而count會設成"-1"是因為FindFirstFile"會將[上層目錄]也是為檔案,因此若不想將[上層目錄]也視為檔案的話記得要將count設成"-1";否則,則設為0。

C++:Delete 各種型別的Array (函式) ( delete 的應用 )

void delete_2D_int_array( int **arr , int x ){
    for(int i = 0 ; i< x ; i++){
        delete [] arr[i];
    }
    delete [] arr;
}
用途:
Delete一個2維整數型別的Array。
用法:
arr為要刪掉的二維Array的指標,x代表此Array的長。
/*
int **arr = create_2Darray_int ( 4 , 5 ); //回傳一個指向4*5陣列的指標
arr[1][2]=1; //用法同一般陣列
delete_2D_int_array(arr,4); //arr這個矩陣的空間已經釋放了
*/
附註:
也可以將int變成double、float等資料型別。記得要搭配上一篇( C++:Create 各種型別的Array (函數) ( new 的應用 ) ) 使用->有Create出來的Array記得用完之後要用此函式將其空間釋放!

C++:Create 各種型別的Array (函式) ( new 的應用 )

int** create_2Darray_int(int x, int y){
    int **array2D=new int* [x];    
    for ( int i = 0 ; i < x ; i++ ){
        array2D[i]=new int[y];
        for ( int j=0 ; j<y ; j++ ){
            array2D[i][j]=0;
        }
    }
    return array2D;
};
用途:
Create一個2維整數型別的Array。
用法:
x、y代表此Array的長寬,回傳指向一個內部資料為0的2維陣列的指標。
/*
int **arr = create_2Darray_int ( 4 , 5 ); //回傳一個指向4*5陣列的指標
arr[1][2]=1; //用法同一般陣列
*/
附註:
也可以將int變成double、float等資料型別。如果要宣告很多個陣列時,這個函數就很方便了!Array使用完後,記得要將空間釋放出來,請搭配下一篇( C++:Delete 各種型別的Array (函式) ( delete 的應用 ) )