c - Navigating through files using dirent.h? -
इस सवाल का पहले से ही एक उत्तर है: < / P>
- 2 जवाब
मैं यह जानना चाहूंगा कि कैसे मैं सीडी में कोड के माध्यम से फ़ोल्डर्स और फाइलों को नेविगेट और संपादित कर सकता हूं। मैंने पुस्तकालय dirent.h देख लिया है, लेकिन मुझे यकीन नहीं है कि कौन से फ़ंक्शंस डायरेक्टरीज़ से गुजरने के लिए उपयोग की जाती हैं क्या मैं इस मामले के लिए सही लाइब्रेरी का भी उपयोग कर रहा हूं, और यदि हां, तो क्या आप मौलिक कार्यों में से कुछ के संक्षिप्त विवरण दे सकते हैं, मुझे फ़ोल्डरों के चारों ओर घूमने और फाइल बदलने की आवश्यकता होगी इसके अलावा, क्या मुझे इस बात का ट्रैक रखने के लिए किसी प्रकार के एक सूचक का उपयोग करना होगा कि मैं वर्तमान में किस निर्देशिका में हूं, जैसे कि मैं एक लिंक्ड सूची के साथ होता हूं? संकेतक को इंगित करने के लिए कुछ ऐसा करने के लिए मुझे द्विआधारी पेड़ बनाने की आवश्यकता होगी?
सबसे महत्वपूर्ण कार्य हैं:
opendir (const char * ) - एक निर्देशिका को खोलता है और एक प्रकार की वस्तु डीआईआर देता है
readdir (डीआईआर *) - एक निर्देशिका की सामग्री को पढ़ता है और एक ऑब्जेक्ट प्रकार dirent ( उदाहरण के लिए, आप इस कोड का उपयोग कर निर्देशिका की सामग्री को सूचीबद्ध कर सकते हैं:
> <पूर्व> पथ पथ सिर्फ 2 पथ को जोड़ता है। यह कोड केवल चयनित निर्देशिका को स्कैन करता है (इसकी उपनिर्देशिका नहीं)। 'गहराई' स्कैन (रिकर्सिव फ़ंक्शन, आदि) करने के लिए आपको अपना कोड बनाना होगा। #include & lt; stdio.h & gt; # शामिल करें & lt; stdlib.h & gt; #include & lt; string.h & gt; # शामिल करें & lt; dirent.h & gt; चार * पथ (const char * str1, char * str2); Int main () {struct dirent * dp; चार * पूर्णपथ; Const char * path = "सी: \\ test \\"; // निर्देशिका लक्ष्य डीआईआर * dir = opendir (पथ); // डायरेक्टरी खोलें- डीआईआर में डीआईआर (डीपी = रीडडीयर (डीआईआर)) के संचालन के लिए एक संकेतक होता है, // अगर डीपी रिक्त है, तो {fullpath = pathcat (path, dp-> gt; d_name) को पढ़ने के लिए कोई और सामग्री नहीं है; Printf ("% s \ n", पूर्णपथ); नि: शुल्क (fullpath); } बंदर (डीआईआर); // हैंडल बंद करें (पॉइंटर) 0 रिटर्न; } Char * pathcat (const char * str1, char * str2) {char * res; Size_t strlen1 = strlen (str1); Size_t strlen2 = strlen (str2); Int i, j; Res = malloc ((strlen1 + strlen2 + 1) * sizeof * res); Strcpy (res, str1); के लिए (i = strlen1, j = 0; ((i और एलटी; (strlen1 + strlen2)) और amp; (j & lt; strlen2)); i ++, j ++ res [i] = str2 [j]; Res [strlen1 + strlen2] = '\ 0'; रिटर्न रिज़; }
Comments
Post a Comment