2010-11-18 14 views
8

क्या निम्नलिखित सी कोड के सी # बराबर है:(सी = getchar())! = सी # में ईओएफ?

while((c = getchar())!= EOF) 
    putchar(c); 

मैं जानता हूँ कि getchar() और putchar() EOF के बारे में क्रमश: लेकिन क्या Console.Read और Console.Write द्वारा प्रतिस्थापित किया जा रहे हैं। विशेष रूप से ध्यान में रखते हुए, सी # एएससीआईआईआई के साथ यूनिकोड और सी के साथ काम करता है, इसका क्या प्रभाव है ??

+0

क्या आपने कंसोल के लिए प्रलेखन की जांच की थी। पढ़ें? http://msdn.microsoft.com/en-us/library/system.console.read.aspx –

उत्तर

8

Console.Read() ईओएफ पर रिटर्न -1 (संयोग से, EOF को अधिकांश प्लेटफ़ॉर्म पर -1 के रूप में परिभाषित किया गया है)।

आप कर सकते हैं:

int c; 
while ((c = Console.Read()) != -1) { 
    Console.Write(Convert.ToChar(c)); 
} 

इसके अलावा, सी # देशी रूप UNICODE के साथ एक ही तरीके से काम करता है कि सी ASCII साथ मूल रूप से काम करता है, अर्थात वहाँ कोई और अधिक प्रभाव है। System.CharUCS-2UNICODE वर्ण का प्रतिनिधित्व करता है, जो int में भी फिट बैठता है, इसलिए सब ठीक हो जाएगा।

1
 int c = -1; 
     while ((c =Console.Read()) >=0) 
     { 
      Console.WriteLine(c); 
     } 
+0

तो सी # में सी के ईओएफ का वास्तविक समकक्ष नहीं है ?? – Fahad

+2

WriteLine को कॉल के साथ क्या है? और आप संख्या क्यों लिख रहे हैं? –

+2

@ फ़हाद: वास्तविक समतुल्य निरंतर मान -1 है। यह दस्तावेज वापसी मूल्य है जब आपके पास पढ़ने के लिए और अधिक नहीं है। –

3

मेरे सिर के ऊपर बंद,

int c; // N.B. not char 
while((c = Console.In.Read()) != -1) 
    Console.Out.Write((char)c); 

जाहिर Read() रिटर्न -1 ज्यादा कुछ नहीं पढ़ने के लिए है या नहीं। मुझे एक ईओएफ निरंतर परिभाषित नहीं दिख रहा है। मैं != -1 के बजाय >= 0 का उपयोग करने के इच्छुक भी हो सकता हूं।

मुझे नहीं लगता कि एएनएसआई बनाम यूनिकोड कोई फर्क पड़ता है - आप एक एपीआई कॉल से एक नंबर पढ़ रहे हैं और इसे दूसरे में खिला रहे हैं। आप सी में यूनिकोड का भी उपयोग कर सकते हैं।

+0

क्या आप जानते हैं कि क्या होगा यदि आप 'Console.Out.Write (int)' कहते हैं? –

+0

@Lasse डी ओह, अच्छा बिंदु। निश्चित (उम्मीद है) – Rup

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