c - Cannot understand why one extra character is being received from input file -


मेरे पास यह है:

  # include & lt; stdio.h & gt; Int main () {FILE * stream = fopen ("abc1", "r"); Int c, i; मैं = 1; करो {c = fgetc (धारा); यदि (सी == EOF) printf ("c है EOF \ n"); Printf ("लूप में:% d% c \ n", i, c); i ++; } जबकि (प्रवासी (सी)); Printf ("% d \ n", i); }  

फ़ाइल abc1 में केवल 4 स्थान हैं। मैं ओ / पी सी को देखने की उम्मीद कर रहा था IOF इससे पहले प्रिंट किया गया है in loop: 5 लेकिन उसके बाद दिखाई दे रहा है क्यों ऐसा?

आउटपुट:

  $। / Loop में / अनजेटस्टेस्ट: लूप में 1: लूप में 2: लूप में 3: 4 में लूप: 5 c ईओएफ है लूप: 6   7  

लूप के बाद रिक्त पंक्ति: 5 < / कोड> इंगित करता है कि 5 वां वर्ण एक नई रेखा है आपकी फ़ाइल में चार रिक्त स्थान और एक नई पंक्ति होनी चाहिए।

आप % c से % d बदलकर इसकी पुष्टि कर सकते हैं, तो आपको एएससीआईआई कोड प्राप्त होगा अक्षरों के लिए 32 स्थान और 10 के लिए नई लाइन।

जारी करने वाले फ़ंक्शन भी नई लाइनों के लिए सत्य है। < / P>

यदि आप काफी यकीन है कि इसमें एक नहीं है, तो "rb" मोड में खोलने का प्रयास करें ऑपरेटिंग सिस्टम लाइन समाप्त होने वाले अनुवाद कर सकता है, और संभवत: फ़ाइल की अंतिम पंक्ति में एक नई पंक्ति संलग्न कर सकता है अगर फ़ाइल में वह एक नहीं होता है तो "r" मोड (उर्फ शब्द मोड पढ़ें) में


Comments

Popular posts from this blog

java - org.apache.http.ProtocolException: Target host is not specified -

java - Gradle dependencies: compile project by relative path -

ruby on rails - Object doesn't support #inspect when used with .include -