अस्वीकरण: यह एक असाइनमेंट के लिए है। मैं स्पष्ट कोड नहीं मांग रहा हूं। इसके बजाय, मैं केवल पर्याप्त मदद मांगता हूं कि मैं अपनी समस्या को समझ सकता हूं और इसे स्वयं ठीक कर सकता हूं।फ़ाइल आईओ सही ढंग से पढ़ने के लिए प्रतीत नहीं होता है
मैं होमवर्क असाइनमेंट के अनुसार यूनिक्स ar
उपयोगिता को फिर से बनाने का प्रयास कर रहा हूं। इस असाइनमेंट का अधिकांश हिस्सा सी में फाइल आईओ से संबंधित है, और अन्य भागों सिस्टम कॉल आदि से निपटते हैं ..
इस उदाहरण में, मैं संग्रह के भीतर सभी फ़ाइलों की एक साधारण सूची बनाना चाहता हूं। जैसा कि आप नोटिस कर सकते हैं, मैं दूर नहीं मिला है। योजना अपेक्षाकृत सरल है: प्रत्येक फ़ाइल शीर्षलेख को संग्रह फ़ाइल से पढ़ें और केवल ar_hdr.ar_name
में आयोजित मान मुद्रित करें। शेष फ़ील्ड को fseek()
के माध्यम से छोड़ दिया जाएगा, जिसमें फ़ाइल डेटा भी शामिल है, जब तक कि कोई अन्य फ़ाइल न पहुंच जाए, जिस बिंदु पर प्रक्रिया फिर से शुरू होती है। यदि ईओएफ पहुंचा है, तो फ़ंक्शन बस समाप्त हो जाता है।
मुझे फ़ाइल IO के साथ थोड़ा सा अनुभव नहीं है, इसलिए मैं इस असाइनमेंट के साथ पहले से ही नुकसान का सामना कर रहा हूं। मैंने अपने लक्ष्यों को प्राप्त करने के उचित तरीकों का शोध करने के लिए अपना सर्वश्रेष्ठ प्रयास किया है, और मेरा मानना है कि मैंने उन्हें अपनी योग्यता के लिए लागू किया है। उस ने कहा, मेरे कार्यान्वयन के साथ कुछ गलत लगता है। संग्रह फ़ाइल से डेटा को पढ़ने के लिए प्रतीत नहीं होता है, या कम से कम एक चर के रूप में संग्रहीत किया जाता है। यहां मेरा कोड है:
struct ar_hdr
{
char ar_name[16]; /* name */
char ar_date[12]; /* modification time */
char ar_uid[6]; /* user id */
char ar_gid[6]; /* group id */
char ar_mode[8]; /* octal file permissions */
char ar_size[10]; /* size in bytes */
};
void table()
{
FILE *stream;
char str[sizeof(struct ar_hdr)];
struct ar_hdr temp;
stream = fopen("archive.txt", "r");
if (stream == 0)
{
perror("error");
exit(0);
}
while (fgets(str, sizeof(str), stream) != NULL)
{
fscanf(stream, "%[^\t]", temp.ar_name);
printf("%s\n", temp.ar_name);
}
if (feof(stream))
{
// hit end of file
printf("End of file reached\n");
}
else
{
// other error interrupted the read
printf("Error: feed interrupted unexpectedly\n");
}
fclose(stream);
}
इस बिंदु पर, मैं केवल डेटा को सही ढंग से पढ़ने में सक्षम होना चाहता हूं। मैं समाप्त होने के बाद अगली फाइल की तलाश करने पर काम करूंगा। मैं अपने बिंदु को दोहराना चाहूंगा, हालांकि, मैं स्पष्ट कोड नहीं मांग रहा हूं - मुझे यह सामान सीखने की ज़रूरत है और मुझे कोई मुझे कामकाजी कोड प्रदान करने की ज़रूरत नहीं है।
+1 इस तरह लिखने के लिए +1 है कि सभी "ब्लाह-ब्लाह होमवर्क के बारे में कुछ टिप्पणियों" की आवश्यकता को कम करता है। – ChiefTwoPencils