सी

2010-10-24 8 views
5

का उपयोग कर एक फ़ोल्डर में फ़ाइलों की सूची हो रही है मैं उदाहरण के लिए एक फ़ोल्डर में पथसी

/MyFolder

या Windows में:

C: \ MyFolder

और मैं उस फ़ोल्डर में सभी फ़ाइलों की एक सूची प्राप्त करना चाहता हूं। मैं सी में ऐसा कैसे करूं?

क्या यह सी ++ या सी 99 में अलग है?

मैं अपने फ़ोल्डर्स की सूची कैसे प्राप्त कर सकता हूं?

किसी भी मदद की सराहना की जाती है।

+2

इस प्रश्न के पास सी या सी ++ के साथ कुछ भी नहीं है लेकिन ओएस के साथ आप इसका उपयोग कर रहे हैं। कृपया अधिक सटीक रहें। –

+0

@ जेन्स उह? आप अस्पष्टता कहां देखते हैं? इसके अलावा सी या सी ++ के साथ बहुत कुछ करना है। –

+3

सी भाषा के रूप में सीओ फाइलों पर आईओ है, लेकिन निर्देशिकाओं की अवधारणा को भी नहीं जानता है। निर्देशिकाएं एक ओएस अवधारणा हैं, इसलिए उस प्रश्न का उत्तर देने के लिए कुछ भी उपयोगी कहने के लिए आपको ओएस को जानना होगा। –

उत्तर

4

POSIX ऑपरेटिंग सिस्टम में, आप opendir कॉल कर सकते हैं() और readdir()। विंडोज़ में आप _findfirst() और _findnext() को कॉल कर सकते हैं। थोड़ा प्रयास करके आप अपने स्वयं के opendir() और readdir() को विंडोज के तहत रैपर फ़ंक्शंस के रूप में कार्यान्वित कर सकते हैं, ताकि आपका एप्लिकेशन कोड हर जगह एक ही एपीआई का उपयोग कर सके। इसका एक उदाहरण here पाया जा सकता है।

3

सी ++ में सबसे अच्छा तरीका बूस्ट फाइल सिस्टम का उपयोग कर रहा है।

सी के लिए, आपको प्लेटफ़ॉर्म API (POSIX/WinAPI) की आवश्यकता होगी।

POSIX प्रलेखन + उदाहरण: http://www.opengroup.org/onlinepubs/009695399/functions/readdir.html

0

यह शास्त्रीय कार्य है, एक संभावित समाधान शायद Kernigan & रिची - सी प्रोग्रामिंग भाषा (अध्याय 8.6) में मिल सकता है। कार्य का सार लक्ष्य फ़ोल्डर और इसके उपफोल्डर्स के पुनरावर्ती ट्रैवर्स है।

+0

यह नीचे मतदान क्यों किया गया था? इस पुस्तक में इस अध्याय में उत्तर * है *।मुझे लगता है कि यह नीचे मतदान किया गया था क्योंकि आपको पहले एक प्रतिलिपि रखना है? http://www.amazon.co.uk/C- प्रोग्रामिंग-भाषा-2nd/dp/0131103628 यदि आप सी सीख रहे हैं तो यह गंभीरता से मूल्यवान है। –

+0

@GaryWilloughby: यह स्कर्ट बहुत करीब है जहां के एंड आर 2 अपनी उम्र दिखाता है। अध्याय में एक कार्य 'dirwalk() 'है जो प्रयोग योग्य है। लगभग तुरंत बाद, 'opendir() ', readdir()', 'बंदर()' का एक नमूना कार्यान्वयन है जो किसी मौजूदा यूनिक्स सिस्टम पर कोई उपयोग नहीं है - लेकिन जो 80 के दशक और 90 के दशक के प्रारंभ में काम करता था। (मुझे यकीन नहीं है कि यह काम करना बंद कर दिया गया है, यह प्लेटफॉर्म पर निर्भर करता है, लेकिन अधिकांश POSIX-ish ओ/एस "आपको हमारे 'opendir()' et al का उपयोग करना चाहिए और K & R से इसका उपयोग नहीं कर सकता 2 और अधिक "द्वारा, कहें, 2005, और शायद बहुत पहले।) –

+0

मैंने कहा" 'dirwalk()' उपयोग योग्य है "। इसे पॉज़िक्स मानक 'opendir()' et al के साथ उपयोग करने योग्य बनाने के लिए कुछ मामूली बदलावों की आवश्यकता है। प्रकार 'डायरेन्ट' को 'स्ट्रक्चर सख्त' बनने की आवश्यकता है (या आपको 'टाइपपीफ स्ट्रक्चर सख्त डायरेन्ट' 'जोड़ने की जरूरत है, और' डीपी-> नाम 'के संदर्भों को' dp-> d_name' में बदलना होगा। –

4

आप में dirent.h

dirent.h कार्यों घोषित उपयोग कर सकते हैं सी प्रोग्रामिंग भाषा कि निर्माणों कि निर्देशिका traversing की सुविधा शामिल है के लिए सी POSIX पुस्तकालय में शीर्ष लेख है। फ़ंक्शन सी मानक का हिस्सा नहीं है, लेकिन "छद्म-मानक" माना जाता है और आमतौर पर प्लेटफ़ॉर्म के बीच पोर्टेबल होता है।
http://en.wikipedia.org/wiki/Dirent.h

#include <dirent.h> 

int main(int argc, char **argv) 
{ 
    DIR *dir; 
    struct dirent *de; 

    dir = opendir("."); /*your directory*/ 
    while(dir) 
    { 
     de = readdir(dir); 
     if (!de) break; 
     printf("%i %s\n", de->d_type, de->d_name); 
    } 
    closedir(dir); 
    return 0; 
} 
1

चेक बाहर get_all_files_within_folder() मैं C/C++ here, जो मैं तुम्हारा के रूप में एक ऐसी ही सवाल का जवाब में लिखा था। यह मेरे लिए पूरी तरह से काम करता है। आशा करता हूँ की ये काम करेगा।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^