2012-04-05 18 views
14

विंडोज़ पर लाइन-ब्रेक मार्कर CR+LF होना चाहिए जबकि यूनिक्स पर, यह केवल LF है।" n" विंडोज़ पर एक नई लाइन क्यों देता है?

तो जब मैं Console.Write("line1\nline2"); जैसे कुछ का उपयोग करता हूं, तो यह "ठीक से" क्यों काम करेगा और मुझे दो लाइनें देगा? मुझे उम्मीद है कि यह \n काम न करे, और केवल \r\n का कॉम्बो काम करेगा।

+1

ऐसी फ़ाइल देखने के लिए आप क्या उपयोग कर रहे हैं? – Oded

+2

संभावनाएं हैं सी # आपके लिए रूपांतरण कर रहा है। –

+0

मैं कंसोल। राइट() 'का उपयोग करके कमांड लाइन कंसोल पर इस लाइन को प्रिंट कर रहा हूं। – user1032613

उत्तर

11

'\ n' रेखा फ़ीड चरित्र है। परंपरागत रूप से, यह प्रिंटर को एक पंक्ति को कागज को रोल करने का कारण बनता है। '\ r' कैरिज रिटर्न कैरेक्टर है, जो पारंपरिक रूप से प्रिंटर हेड को पेपर के बाएं किनारे पर ले जाने का कारण बनता है।

प्रिंटर और शान्ति है कि इस तरह से पात्रों की व्याख्या पर, line1\nline2 के उत्पादन

line1 
    line2 

कई शान्ति (और संपादकों) की व्याख्या करेगा '\ n' मतलब करने के लिए कि आप एक नया शुरू करना चाहते हो सकता है लाइन और कर्सर को उस नई लाइन की शुरुआत में स्थिति दें। यही वह है जो आप यहां देखते हैं।

आपको किसी विशेष स्थिरांक को हार्ड-कोडिंग के बजाय Environment.NewLine का उपयोग करना चाहिए।

+0

कंसोल एक दर्शक है जो मुझे लगता है? –

+0

@ ओएओडी: निश्चित रूप से, 'myFileWithSlashNDelimiters टाइप करें' टेक्स्ट को अलग-अलग लाइनों या एक लंबी रेखा के रूप में प्रदर्शित करेगा। सुनिश्चित नहीं है कि, लेकिन किसी भी तरह से यह एक दर्शक है। मैंने अपनी स्पष्ट टिप्पणी से पहले जवाब दिया कि वह Console.Write() का उपयोग कर रहा है। –

+0

'\ n' ASCII तालिका में लाइन फीड कैरेक्टर है, इसलिए, आपको एक नई लाइन मिलती है। अप्रत्याशित बात यह है कि 'कंसोल। राइट' विधि भी '\ r' का अर्थ है, जो पूछताछ की आपूर्ति नहीं कर रहा है, और कैरिज रिटर्न कौन सा है। – H2ONaCl

0

फ़ाइल एन्कोडिंग! = Console व्याख्या।

दूसरे शब्दों में, जबकि CR + LF की "विंडोज मानक" फ़ाइलों के लिए मौजूद है, बस LF, या \n उचित गाड़ी वापसी और कंसोल विंडो में नए लाइन व्याख्या हुई है।

0

\ n रेखा फ़ीड चरित्र है। * निक्स और विंडोज सिस्टम दोनों पर इसे 2 लाइनें बनाना चाहिए। \ R कैरिज रिटर्न है, यह लेखन उपकरण को लाइन की शुरुआत में ले जाता है।

अधिकांश आधुनिक शान्ति/संपादक काफी लचीला के रूप में \ r \ n

0

मेरे अनुभव में \ N व्याख्या करने के लिए कर रहे हैं, जब आप WriteLine साथ कंसोल (करने के लिए उत्पादन) यह \ स्वीकार करता n चरित्र भाग जाते हैं। जब आप StreamWriter का उपयोग कर रहे हैं और WriteLine() को कॉल करते हैं तो यह आपको \ r \ n को एक नई पंक्ति में जाने के लिए टाइप करता है। मुझे लगता है कि कंसोल को कैरिज रिटर्न के बिना \ n बचने वाले चरित्र को स्वीकार करने के लिए प्रोग्राम किया गया है \ r।

8

यह अंतर्निहित विंडोज कंसोल का मानक व्यवहार है। यदि आप कंसोल पर 0x0A आउटपुट करते हैं तो मूल सी ऐप ठीक वही करेगा।

बेशक, आपको अपनी नई लाइनों के लिए Environment.NewLine का उपयोग करना चाहिए। Environment.NewLine विंडोज और \n पर सिस्टम जैसे यूनिक्स पर \r\n पर हल करता है।

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