2009-04-21 5 views
6

यूनिक्स में \ n, मैक \ r था लेकिन अब \ n और डॉस/Win32 \ r \ n है। सी के साथ एक टेक्स्ट फ़ाइल बनाते समय, यह सुनिश्चित करने के लिए कि ओएस के लिए लाइन वर्ण (ओं) का कौन सा अंत उपयुक्त है?सी में लिखे गए चरित्र के किसी भी अंत को ओएस के लिए उचित कैसे लिखना है?

उत्तर

11
fprintf(your_file, "\n"); 

यह बशर्ते कि आप पाठ मोड में फ़ाइल को खोला अपने ऑपरेटिंग सिस्टम पर stdio पुस्तकालय द्वारा एक उपयुक्त EOL में परिवर्तित हो जाएगा। बाइनरी मोड में कोई रूपांतरण नहीं होता है।

+1

यदि फ़ाइल पाठ मोड –

+0

में खोला गया है, हां, ज़ाहिर है। मुझे शुरुआत से ही इसमें शामिल होना चाहिए था। अभी अपडेट किया गया – hlovdal

+0

पूछने वाले ने टेक्स्ट फ़ाइलों के बारे में स्पष्ट रूप से बात की। – Joey

12

विकिपीडिया से:

जब पाठ मोड में एक फ़ाइल लेखन, '\ n' पारदर्शी रूप से देशी न्यू लाइन दृश्य है, जो अधिक समय तक एक चरित्र हो सकता है सिस्टम द्वारा प्रयुक्त करने के लिए अनुवाद किया है। (ध्यान दें कि एक सी कार्यान्वयन फाइलों में न्यू लाइन अक्षर नहीं स्टोर करने के लिए अनुमति दी है। उदाहरण के लिए, एक पाठ फ़ाइल की तर्ज एक एसक्यूएल तालिका की पंक्तियों के रूप में या अचल लंबाई रिकॉर्ड के रूप में संग्रहित किया जा सकता है।) जब पढ़ने पाठ मोड में, मूल न्यूलाइन अनुक्रम का अनुवाद '\ n' पर किया गया है। बाइनरी मोड में, सी लाइब्रेरी द्वारा समर्थित I/O का दूसरा मोड , अनुवाद निष्पादित किया गया है, और किसी भी भागने का आंतरिक प्रतिनिधित्व अनुक्रम सीधे आउटपुट है।

8

जब आप पाठ मोड में किसी फ़ाइल को खोलने के लिए किसी भी नई पंक्ति फाइल करने के लिए लिखे गए वर्णों को स्वचालित रूप से सिस्टम के लिए उपयुक्त न्यू लाइन अनुक्रम में परिवर्तित हो जाएगा (के बजाय "पश्चिम बंगाल" fopen को पारित "डब्ल्यू")। जब आप फ़ाइल पढ़ते हैं तो न्यूलाइन अनुक्रमों को वापस न्यूलाइन वर्णों में अनुवादित किया जाएगा।

यही कारण है कि पाठ और बाइनरी मोड के बीच अंतर करना महत्वपूर्ण है; यदि आप बाइनरी मोड में लिख रहे हैं, तो सी आपके द्वारा लिखे गए बाइट्स से छेड़छाड़ नहीं करेगा।

+0

+1 (और मुझे इसे मारने के लिए!) –

संबंधित मुद्दे