|
2006/10/13 上午 11:58:13
請教各位大大,目前剛看完c的基礎書,想練習一下,我如果要取得某一目錄下的所有檔案名稱(含子目錄裡的檔案),我該往哪方面找呢?書上講的file i/o部份只是新增,刪除,修改 檔案或目錄,到網路上有找到有人說在microsoft vc裡有提供findfirst()和findnext(),但我該如何使用?還是有其它方式呢? 謝謝
|
|
|
2006/10/13 下午 05:06:49
各位大大,不好意思,剛剛又去爬文了一下,其實有些問題是有解答,但是我是用搜尋的方式(文章太多沒有一個一個看),只要關鍵字沒下對就找不到,所以剛剛就有找到類似的,其實應該算解答了,可是我沒辦法試,因為我include <dir.h>,complier就會出錯,所以沒法試,各位大大我這是出了什麼問題??我用的是visual c++ 謝謝
|
|
|
2006/10/13 下午 08:53:41
>因為我include <dir.h>,complier就會出錯,所以沒法試,各位大大我這是出了什麼問題??我用的是visual c++
<dir.h> 不是標準的頭檔, VC++ 也沒有 <dir.h>.
findfirst(), findnext(), findclose() 所需的頭檔可以在相關函式的 MSDN 說明裡找到.
反正用的已經不是標準的函式了, 你也可以用 Windows 的 APIs 來做, 相關函式是: FindFirstFile(), FindNextFile(), FindClose(). MSDN 內也有例子.
|
|
|
2006/10/13 下午 11:40:20
#include <stdio.h> #include <string.h> #include <io.h> //c_file #include <direct.h>
void main() { char sdir[256], filter[256], path[256]; struct _finddata_t c_file; long hFile;
strcpy( sdir, "C:\\SOME_FOLDER" ); strcpy( filter, "*.jpg" );
_chdir( sdir ); hFile = _findfirst(filter, &c_file); if( hFile!=-1 ) { do{ sprintf( path, "%s\\%s", sdir, c_file.name ); printf( "%s\n", path ); }while( _findnext( hFile, &c_file )==0 ); } }
|
|
|
2006/10/15 下午 03:29:27
感謝前輩我的程式寫出來了,但是我還有一個問題 就是我去開io.h direct.h檔出來之後,後來看仔細後,裡面真的有所有function的定義,而且還有結構的定義,幫助我不少,比一直查尋msdn快很多,但是裡面的註解全都沒有寫到有關function的東西,害我要一個一個function去查msdn看他輸入值是幹麻的還有輸出是幹麻的,這樣真的很麻煩也,難到沒有將每個.h都定義一個manual嗎?在c++或是c中好像只有std的部份網路上資料查出來一大堆,但是不含在std裡面的.h的話好像就只能看是不是用過或是問別人才知道有什麼用了
而且msdn怎麼不像java manual一樣具有向上查尋的功能,每次尋到一個function應該可以選擇他的.h在去看其它的function是做什麼的,不然的話真的需要找半天。
|
|
|
2006/10/15 下午 09:41:59
感謝各位大大, 雖然小弟的進度比較慢(只知c的基本語法,其餘皆不知),但是還是小有成果,但是我這裡有一個問題就是,win32 api與MFC有何不同?,我是用win32 WIN32_FIND_DATA函數來做的,這幾天也去坊間找過一些書(非C or C++基礎的書),有關這一方面真的是少之又少,可能是時代變化吧!有看到一本MFC舊版新刷的書(超厚),但是不了解也不太敢買,不知市面上有無講win32 api使用的書嗎??還是只能上msdn,或是各位大大認為msdn已足夠了??
|
|
|
2006/10/15 下午 10:12:08
hi樓上的^^
我想我們都是正在起步,不知道可不可以交個朋友一起開發學習,這樣彼此都會很有進步,如果可以的話不知道你能否加入我到你的msn中呢? 我的信箱寫給你好了femc7488@ms94.url.com.tw 或是你寄你msn的位子到我的信箱中也行^^這樣有問題就可以互相多討論了
|
|
|
2006/12/22 上午 08:44:26
// from C++ Cookbook, O'REILLY // // tested in WinXP+wxDev-C++6.10(or Dev-C++4.9.9.2)+Boost_1_33_1 OK!! // // std::cerr << "Usage: " << argv[0] << " [dir name]\n"; // #include <iostream> #include <boost/filesystem/operations.hpp> #include <boost/filesystem/fstream.hpp>
using namespace boost::filesystem;
int main(int argc, char** argv) {
if (argc < 2) { std::cerr << "Usage: " << argv[0] << " [dir name]\n"; return(EXIT_FAILURE); }
path fullPath = // Create the full, absolute path name system_complete(path(argv[1], native));
if (!exists(fullPath)) { std::cerr << "Error: the directory " << fullPath.string( ) << " does not exist.\n"; return(EXIT_FAILURE); }
if (!is_directory(fullPath)) { std::cout << fullPath.string( ) << " is not a directory!\n"; return(EXIT_SUCCESS); }
directory_iterator end; for (directory_iterator it(fullPath); it != end; ++it) { // Iterate through each // element in the dir, std::cout << it->leaf( ); // almost as you would if (is_directory(*it)) // an STL container std::cout << " (dir)"; std::cout << '\n'; }
return(EXIT_SUCCESS); }
|
|
|
2006/12/25 下午 10:47:31
通常這種題目是要訓練你遞迴和迴圈的觀念,你應該要STUDY的是這部分吧
|
|
|
2007/11/15 上午 04:04:09
雖然這是一篇很舊的文章,但是我想請問大家 linux下的gcc or g++有類似FindFristFile嗎?
大部分我目前看過的,傾向用boost?// 不知道這樣有錯嗎?
雖然搭配shell script可以讀取目錄下所有檔案 或是ls -l > list 讀取list所有檔案名稱,可以做到類似行為
但是我有點想自己寫出一個類似perl可以讀取所有目錄下所有檔案的函式 ps:有時候發問問題時,太急躁,沒有先check out幾次,希望大家不要介意
|
|
|
2007/11/15 上午 09:01:13
剛剛去翻了一下 GCC 的 C library document, 找到這個東西:
http://www.gnu.org/software/libc/manual/html_node/Scanning-Directory-Content.html#Scanning-Directory-Content
我自己沒用過,請自己試試看吧! :)
|
|
|
2007/11/15 下午 02:42:11
我猜測這應該可以解決我要的
不知道我可以用new來替代malloc嗎
再者,不太理解struct dirent ***namelist, 應該只要 寫出 int *namelist=new int[size] 就可以吧
因為我沒用過指標函式 不過很謝謝你 我會請教我學長c的一些用法[我目前只會c++一些基本用法] ^^只要可以些出perl中的幾個類似功能,之後就輕鬆了
|
|
|
|
|
|
C++ |
 |
|
|
專家等級 |
評價 |
|
|
一代宗師 |
10000 |
|
|
曠世奇才 |
5000 |
|
|
頂尖高手 |
3000 |
|
|
卓越專家 |
1500 |
|
|
優秀好手 |
750 |
|
|
|
|
|
|
|
|
|
Microsoft Internet Explorer
6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/ |
|
|