2010-09-29 16 views
5

दोनों का मतलब है "नई लाइन" लेकिन जब एक दूसरे पर उपयोग किया जाता है? n और r n के बीच क्या अंतर है?

+0

उपयोग कर सकते हैं आप '\ r' चूक जाते हैं तो गाड़ी 5 मिनट में – chiccodoro

+0

haha ​​अच्छा 7 जवाब अपनी शुरुआत स्थिति ;-) को वापस नहीं होगा .. केवल के साथ 2 9 विचार, मतलब 1/4 लोगों ने एक उत्तर लिखा :) –

+0

लेकिन यह निश्चित रूप से _not_ भाषा अज्ञेयवादी है। '\ r \ n' कई सी और सी भाषाओं की तरह आम बचने वाले seqeunces हैं, लेकिन निश्चित रूप से सभी भाषाओं नहीं है। – Oded

उत्तर

16

\r\n एक विंडोज शैली

\n एक POSIX शैली

\r है पुराने पूर्व ओएस एक्स Macs शैली है, आधुनिक मैक के का उपयोग कर POSIX शैली है।


\r एक carrige वापसी और \nपुराने कंप्यूटर में एक लाइन फ़ीड है, जहां यह मॉनिटर नहीं, केवल बाहर निकलने के लिए कार्यक्रम, उपयोगकर्ता के लिए परिणाम आप नए की घूर से प्रिंट करने में मिल चाहते हैं, तो प्रिंटर है बाएं से लाइन, आप लाइन के लिए \n मिल चाहिए फ़ीड, और के लिए \rकैरिज सबसे बाईं स्थिति के लिए लौटने के लिए, इस पुराने कंप्यूटर वाक्य रचना विंडोज मंच पर इस समय को बचाया से प्राप्त होता है।

+0

ध्यान दें कि '\ r' प्री-ओएस एक्स मैक के लिए केवल "मैक स्टाइल" है। आधुनिक मैक POSIX शैली का उपयोग करते हैं, क्योंकि वे अंततः बीएसडी व्युत्पन्न पर आधारित होते हैं। –

+0

@ टायलर मैकहेनरी: समीक्षा के लिए धन्यवाद, अपडेट किया गया! ;-) – Svisstack

+1

सीआर + एलएफ आमतौर पर डेटा संचारित करने के लिए उपयोग किए जाने वाले ओएस के बावजूद कई नेटवर्किंग प्रोटोकॉल (जैसे HTTP) में उपयोग किया जाता है। \ r' आमतौर पर सीआर को मैप किया जाता है जब भी लक्ष्य प्रणाली एएससीआईआई या यूनिकोड को अपने चरित्र प्रणाली के रूप में उपयोग करती है। (यदि लक्ष्य प्रणाली ईबीसीडीआईसी का उपयोग करती है, तो \ r' में मैपिंग नहीं हो सकती है।) \ N' ट्रिकियर है, क्योंकि यह संदर्भ पर निर्भर करता है। इसे अक्सर एएससीआईआई/यूनिकोड लाइन फीड में मैप किया जाता है, लेकिन यह हमेशा इतना आसान नहीं होता है। "संभावित डुप्लिकेट" प्रश्न के उत्तर में विवरण हैं। –

1

'\ n' यूनिक्स में डिफ़ॉल्ट है, \ r \ n 'विंडोज़ में डिफ़ॉल्ट है।

2

\ n केवल एक नई लाइन है, \ r \ n एक नई लाइन और एक कैरिज रिटर्न है (यानी कर्सर को बाईं ओर ले जाएं)।

1

विभिन्न ऑपरेटिंग सिस्टम अलग-अलग तरीके से न्यूलाइन को संभालते हैं। यहां सबसे आम लोगों की एक छोटी सूची दी गई है: डॉस और विंडोज

वे उम्मीद करते हैं कि एक नई लाइन दो अक्षरों का संयोजन हो, अर्थात् '\ r \ n' (या 13 के बाद 13)।

यूनिक्स (और इसलिए लिनक्स के साथ-साथ)

यूनिक्स एक नई लाइन से संकेत मिलता है एक '\ n' का उपयोग करता है।

मैक

मैक एक '\ r' का उपयोग करते हैं।

इसलिए जब आप फ़ोल्डर पथ और समान रूप से उपयोग करते हैं तो आप अपने ऐप को विंडोज़ से मैक पर पोर्ट करते समय समस्याएं पैदा करते हैं।

0

अंतर अलग ऑपरेटिंग सिस्टम के बीच है, विंडोज पर, न्यू लाइन चरित्र लिनक्स पर \r\n जबकि यह सिर्फ \n मैक OSX सिर्फ \r इसकी वास्तव में सिर्फ क्या ओएस के डिजाइनर इसे बनाया की बात

होने के लिए किया गया है है
1

\ n का अर्थ है नई लाइन। इसका मतलब है कि कर्सर को अगली पंक्ति में जाना होगा।

\ r का मतलब कैरिज रिटर्न है। इसका मतलब है कि कर्सर को लाइन की शुरुआत में वापस जाना चाहिए।

यूनिक्स और यूनिक्स प्रोग्राम आमतौर पर केवल एक नई लाइन (\ n) की आवश्यकता होती है।

विंडोज और विंडोज प्रोग्राम आमतौर पर दोनों की आवश्यकता होती है।

1

इस तरह नई लाइन ऑपरेटिंग सिस्टम में प्रस्तुत किया जाता है है विंडोज (\ r \ n) और लिनक्स (\ N)

यूनिक्स पर \ r एक कैरिज रिटर्न (सीआर) और \ na लाइन फ़ीड (एलएफ) जो एक साथ विंडोज़ न्यूलाइन पहचानकर्ता होने के लिए होता है और आप उन्हें यूनिक्स न्यूलाइन पहचानकर्ता के साथ बदल रहे हैं।

विंडोज़ पर \ r एक सीआर भी है, लेकिन \ n सीआर और एलएफ का संयोजन है। तो प्रभावी ढंग से आप सीआर + सीआर + एलएफ को सीआर + एलएफ के साथ बदलने की कोशिश कर रहे हैं। समझ में नहीं आता है, क्या यह करता है।

"perldoc perlop" से: सभी सिस्टम वर्चुअल टर्मिनर, को "न्यूलाइन" नामक करने के लिए वर्चुअल \ n "" का उपयोग करते हैं। एक अनूठी, भौतिक न्यूलाइन कैरेक्टर जैसी कोई चीज़ नहीं है। यह केवल एक भ्रम है कि ऑपरेटिंग सिस्टम, डिवाइस ड्राइवर, सी पुस्तकालय, और पर्ल सभी संरक्षित करने के लिए षड्यंत्र करते हैं। सभी सिस्टम ASCII सीआर और "" \ n "" ASCII एलएफ के रूप में पढ़ते हैं। उदाहरण के लिए, मैक पर, इन्हें उलट दिया जाता है, और लाइन टर्मिनेटर के बिना सिस्टम पर, प्रिंटिंग \ n "" कोई वास्तविक डेटा उत्सर्जित नहीं कर सकता है। सामान्य रूप से, जब आप का अर्थ अपने सिस्टम के लिए "न्यूलाइन" करते हैं, लेकिन को सटीक वर्ण की आवश्यकता होती है तो शाब्दिक ASCII का उपयोग करें। उदाहरण के लिए, अधिकांश नेटवर्किंग प्रोटोकॉल की अपेक्षा करते हैं और लाइन टर्मिनेटर, के लिए सीआर + एलएफ ("" \ 015 \ 012 "" या "" \ cM \ cJ "") पसंद करते हैं और हालांकि वे अक्सर स्वीकार करते हैं \ "12 \" , वे शायद ही कभी "\ 015" "सहन करते हैं। यदि आपको नेटवर्किंग के लिए \ n "" प्रयोग करने की आदत मिलती है, तो आप कुछ दिन जला सकते हैं।

0

सी # में, आप बस Environment.NewLine

+0

विडंबना यह है कि यद्यपि यह उपयोग "\ n" या "\ r \ n" (कम से कम डीओटी नेट) पर पसंदीदा है, लेकिन यह वास्तव में मूल प्रश्न का उत्तर नहीं देता है। – mickeyf

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