उस प्रोग्राम के दस्तावेज़ीकरण से परामर्श करें जो CSV फ़ाइल प्रदान कर रहा है। प्रत्येक पंक्ति में फ़ील्ड की संख्या, साथ ही प्रत्येक फ़ील्ड का स्वरूप निर्धारित करें। उदाहरण के लिए, यदि कोई प्रोग्राम निम्नलिखित डेटा के साथ एक CSV प्रदान करता है: 1, "परीक्षण", 34.5 आप तीन फ़ील्ड चिह्नित करेंगे: एक पूर्णांक, एक स्ट्रिंग और एक फ़्लोटिंग पॉइंट नंबर।
सीएसवी में पहचाने गए प्रत्येक फ़ील्ड के लिए डेटा सदस्य युक्त एक संरचना बनाएं। 1, "परीक्षण", 34.5 की प्रदान की गई उदाहरण पंक्ति का उपयोग करके आपको निम्नलिखित संरचना की आवश्यकता होगी: संरचना डेटा { int col1; चार * col2; फ्लोट col3; };
अपने प्रोग्राम में एक मेथड बनाएं जो CSV फाइल को पढ़ने का काम संभाल सके। इसे आपके बाकी प्रोग्राम के लिए एक्सेस करने की आवश्यकता होगी, और संभवतः सामान्य डेटा संरचनाओं पर काम करने की आवश्यकता होगी ताकि अन्य तरीके उस डेटा तक पहुंच सकें जिसे पढ़ा गया है। रिटर्न वैल्यू की आवश्यकता को दूर करने के लिए संदर्भ द्वारा पैरामीटर पास करें। एक उदाहरण फ़ंक्शन प्रोटोटाइप होगा: शून्य ParseCSV (चार * फ़ाइल नाम, डेटा और इनपुट);
एक फ़ाइल ऑब्जेक्ट बनाएं, जो निम्न कोड का उपयोग करके डेटा में पढ़ेगा: FILE * pInput;
एक बार में फ़ाइल की एक पंक्ति को होल्ड करने के लिए पर्याप्त वर्ण बफ़र बनाएँ। भाषा की बाधाओं के कारण, ऐसा करने का सबसे सरल तरीका पर्याप्त रूप से बड़े आकार की वर्ण सरणी घोषित करना है: #define BUFFER_SIZE 1024
फ़ाइल को निम्न कोड के साथ खोलें, और इसे अपने पहले बनाए गए FILE ऑब्जेक्ट को असाइन करें: pInput = fopen("filename," "r")
fgets (buf, sizeof (buf), pInput)
फ़ंक्शन "स्ट्रोक" का उपयोग करके सीएसवी को पार्स करें। टोकन को इंगित करने के लिए एक नया वर्ण स्ट्रिंग बनाएं, और इसे ऊपर में पढ़ी गई रेखा से डेटा के साथ प्रारंभ करें: char *tok = strtok (buf, ",")
प्राप्त टोकन को उपयुक्त डेटा में बदलें। उदाहरण पंक्ति का उपयोग करना: 1, "परीक्षण", 3.45 निम्नलिखित कोड का उपयोग करके "टोक" में निहित डेटा को एक पूर्णांक में परिवर्तित करें: row.col1 = atoi (tok);
उसी पंक्ति से बाद में पढ़ने के लिए, "strtok" को बफर स्ट्रिंग के बजाय एक NULL पैरामीटर पास करें जिसे आपने पहले पढ़ा था: tok = strtok (NULL, ",") फिर, टोकन को उपयुक्त डेटा प्रकार में परिवर्तित करें। उदाहरण पंक्ति 1,"test",3.45 का उपयोग करते हुए एक पंक्ति के लिए पार्सिंग कोड होगा: char *tok = strtok (buf, ","); row.col1 = atoi (टोक); टोक = स्ट्रोक (नल, ","); row.col2 = टोक; टोक = स्ट्रोक (नल, ","); row.col3 = atof (टोक);
CSV की प्रत्येक पंक्ति की सभी प्रविष्टियों के लिए ऐसा करें। फ़ंक्शन "स्ट्रोक" अल्पविराम मानों के बीच डेटा प्रदान करना जारी रखेगा जब तक कि यह बफर में डेटा से बाहर नहीं हो जाता है, जिस बिंदु पर यह न्यूल लौटाएगा। यह इंगित करेगा कि आपने लाइन के साथ समाप्त कर दिया है।
चेतावनी
फ़ंक्शन "fopen" कोई त्रुटि होने पर NULL लौटा सकता है - इसका उपयोग करने से पहले अपनी फ़ाइल की जांच करना सुनिश्चित करें। कुछ मामलों में, प्रदान किए गए टोकन अपेक्षित प्रारूप के नहीं हो सकते हैं। सामान्य त्रुटि मानों (खाली स्ट्रिंग, NULL, आदि) के विरुद्ध जाँच करके आँख बंद करके रूपांतरण करने से पहले अपने डेटा की जाँच करना सुनिश्चित करें।