2015-12-17 6 views
6

यह मेरे द्वारा बस एक बड़े कार्यक्रम के एक हिस्से का परीक्षण करते समय मेरे साथ हुआ। मूल कार्य एक विशेष तरीके से है कि मैं जरूरत में एक स्ट्रिंग से गैर ASCII वर्ण को दूर होता है, बात इस कार्यक्रम`fwprintf 'के बाद' fprintf 'का उपयोग करते समय कोई आउटपुट नहीं

#include <stdio.h> 
#include <wchar.h> 

int main(int argc, char *argv[]) 
{ 
    fwprintf(stdout, L"-- Example\n"); 
    fprintf(stdout, "-- Example\n"); 

    return 0; 
} 

मेरी लिनक्स पर दूसरा -- Example मुद्रित नहीं होगा (फेडोरा 22) प्रणाली है। हालांकि fwprintf() का उपयोग फिर से या fprintf(stderr, "-- Example\n"); काम करेगा।

  • क्या यह अपेक्षित व्यवहार है? और क्यों?
+1

क्या ऑपरेटिंग सिस्टम? – trojanfoe

+0

@trojanfoe टैग अपडेट किया गया। –

+0

एमएसवीसी के साथ काम करता है। –

उत्तर

1

मेरा मानना ​​है कि यह समस्या फ़ाइल स्ट्रीम के विस्तृत अभिविन्यास से संबंधित हो सकती है। यदि fwide() का उपयोग नहीं किया जाता है तो पहले फ़ाइल फ़ंक्शन का अभिविन्यास अभिविन्यास निर्धारित करने के लिए उपयोग किया जाता है (आप फ़ाइल खोलते समय अभिविन्यास भी सेट कर सकते हैं, लेकिन यह यहां लागू नहीं होता है)।

एक बार स्ट्रीम चौड़ी हो जाने के बाद आपको व्यापक कार्यों का उपयोग करने की आवश्यकता है; और जब गैर-चौड़े आपको गैर-व्यापक कार्यों का उपयोग करने की आवश्यकता होती है।

एक बार अभिविन्यास सेट हो जाने पर, इसे बदला नहीं जा सकता है।

+0

मैं आपका जवाब पढ़ रहा हूं। मैंने विस्तृत दिशा को वापस करने की कोशिश की है और, जैसा कि आप कहते हैं, इसे बदलने की अनुमति नहीं है। मुझे समझ में नहीं आता कि यह व्यवहार क्यों लगाया गया था। क्या आप इस व्यवहार का कारण जानते हैं? –

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