c - Read structure contents using read() system call -


<पूर्व> #include "common.h" #include & lt; string.h & gt; संरचना बफर {int no; चार नाम [20]; }; Int main () {struct बफर बफ़; संरचना बफर read_buf; इंट एफडी; अगर ((एफडी = खुला ("read_write.txt", O_CREAT | O_RDWR, S_IRUSR | S_IWUSR)) & lt; 0) {PRINT_ERROR (errorbuf); } Buf.no = 10; strcpy (buf.name, "नितिन"); अगर (लिखिए (एफडी, और बफ़, आकार (ढांचा बफर)) & lt; 0) {PRINT_ERROR (त्रुटिबुफ); } Printf ("लिखित सफलतापूर्वक \ n"); / * संरचना की सामग्री को 'read_buf' * / exit (0) में पढ़ने के लिए यहां कोड जोड़ें; }

सामान्य.h
  #include & lt; stdio.h & gt; # शामिल करें & lt; unistd.h & gt; # शामिल करें & lt; stdlib.h & gt; # शामिल करें & lt; sys / stat.h & gt; # शामिल करें & lt; sys / types.h & gt; # शामिल करें & lt; fcntl.h & gt; चार त्रुटिबुफ [20]; # परिभाषित PRINT_ERROR \\ \ {\ sprintf (errorbuf, "% s:% d", __ फाइल __, __ LINE__); \ दर्पण (त्रुटिबुफ); \ Exit (-1); \} जबकि (0);   

मैंने फ़ाइल में एक संरचना लिखा है। लेकिन मुझे इस बात पर भ्रम हो रहा है कि पहले किस तरह की संरचना को 'read_buf' में लिखे गए ढांचे के प्रत्येक तत्व को पुनः प्राप्त किया जाए कृपया मुझे बताइए कि ऐसा कैसे करें।

धन्यवाद

  lseek ( एफडी, 0, SEEK_SET);   

काम करेगा, लेकिन कुछ अन्य चीजें हैं जिन्हें आपको चिंता करने की आवश्यकता होगी।

  • यह पोर्टेबल नहीं है।
  • आपको अलग-अलग बिल्डों पर संरचना पैकिंग के बारे में चिंता करने की आवश्यकता होगी।
  • आपके पास एंडियन समस्याएं क्रॉस प्लेटफ़ॉर्म होंगे।
  • विंडोज की आवश्यकता है O_BINARY।

    एक ज्ञात प्रारूप में संरचना को पुनर्प्रेषित करना लगभग हमेशा बेहतर होता है (ज्ञात समाप्ति के साथ) ताकि आप डेटा को वापस मज़बूती से पढ़ सकें।

Comments