मेरे पास एक बाइनरी फ़ाइल है जिसे मैं फोरट्रान के साथ पढ़ना चाहता हूं। समस्या यह है कि यह फोरट्रान द्वारा नहीं लिखा गया था, इसलिए इसमें रिकॉर्ड लंबाई संकेतक नहीं हैं। तो सामान्य अनौपचारिक फोरट्रान पढ़ा नहीं जाएगा।क्या फोरट्रान सीधे बाइनरी फ़ाइल से बाइट पढ़ सकता है?
मुझे एक विचार था कि मैं स्नीकी हो सकता हूं और फ़ाइल को एक स्वरूपित फ़ाइल, बाइट-बाय-बाइट (या 4 बाइट्स द्वारा 4 बाइट्स, वास्तव में) एक वर्ण सरणी में पढ़ सकता हूं और फिर वर्णों की सामग्री को रूपांतरित कर सकता हूं ट्रांसफर फ़ंक्शन या ड्रेडेड समकक्ष कथन के माध्यम से पूर्णांक और फ़्लोट्स। लेकिन यह काम नहीं करता है: मैं एक समय में 4 बाइट पढ़ने की कोशिश करता हूं और inquire
कथन से पीओएस आउटपुट के अनुसार, पढ़ना 6000 बाइट्स या उससे भी अधिक की तरह छोड़ देता है, और चरित्र सरणी जंक के साथ लोड हो जाती है।
तो यह कोई नहीं है। क्या इस दृष्टिकोण में कुछ विस्तार है जो मैं भूल रहा हूं? या फोर्ट्रान में ऐसा करने के लिए सिर्फ एक मौलिक रूप से अलग और बेहतर तरीका है? (बीटीडब्लू, मैंने integer*1
सरणी और बाइट सरणी में पढ़ने की भी कोशिश की। हालांकि ये कोड संकलित होंगे, जब यह पढ़े गए वक्तव्य पर आया, तो कोड क्रैश हो गया।)
बढ़िया काम करता है! धन्यवाद! और मैंने सोचा कि मैं सिर्फ फोरट्रान 9 0 के साथ अच्छा होने के बारे में था। और अब सीखने के लिए और अधिक! ठीक है। बहुत धन्यवाद। –
फोरट्रान पढ़ने के "स्ट्रीम" पहुंच के बिना कुछ डेटा को लंबाई-रिकॉर्ड जानकारी के रूप में व्याख्या कर रहा था। जो दोनों डेटा को छोड़ दिया गया था जिसे आप पढ़ना चाहते थे और रिकॉर्ड की लंबाई गलत होने का कारण बन गया था। इसके अलावा फ़ाइल में वास्तव में फोरट्रान भावना में रिकॉर्ड नहीं हैं। –
@ एमएसबी .: यदि ओपी ने संकेत दिया है, तो उसने पहले स्वरूपित पढ़ने के साथ प्रयास किया, मेरा अनुमान है कि यह तब तक स्कैन किया गया जब तक कि यह एक न्यूलाइन चरित्र नहीं मारा जाता। – janneb