मैं fscanf/fprintf w/%c का उपयोग करके सीधे एक टेक्स्ट फ़ाइल से दूसरे टेक्स्ट फ़ाइल में वर्णों की प्रतिलिपि बनाने का प्रयास कर रहा हूं लेकिन मुझे फ़ाइल के बहुत अंत में एक अतिरिक्त सफेद स्पेस कैरेक्टर के साथ छोड़ा जा रहा है।
क्या कोई तरीका है कि मैं आउटपुट फ़ाइल से अंतिम व्हाइटस्पेस वर्ण को ट्रिम कर सकता हूं या मेरे फ़ंक्शन को अंतिम सफेद स्थान को अनदेखा करने के लिए कह सकता हूं?
इसके अलावा मेरी बाधाएं तय करती हैं कि मुझे किसी भी पढ़े गए पात्रों को पार्स करने के लिए सरणी का उपयोग करने की अनुमति नहीं है। मेरे प्रोग्राम को सीधे इनपुट फ़ाइल से आउटपुट फ़ाइल में पढ़ने और कॉपी करने की आवश्यकता है।
यहाँ मेरा कोड नीचे है।
void copyFile(FILE* inputStream, FILE* outputStream){
while(!feof(inputStream)) {
int readCorrectly;
char readChar;
readCorrectly = fscanf(inputStream, "%c", &readChar);
if (readCorrectly) {
fprintf(outputStream, "%c", readChar);
}
}
}
1 उत्तर
यहां समस्या यह है कि जब आप फ़ाइल के अंत से पहले पढ़ने का प्रयास करते हैं तो एंड-ऑफ-फाइल इंडिकेटर सेट हो जाता है।
इसे हल करने के लिए, आपको fscanf
के बाद चेक जोड़ना होगा। जैसे
if (feof(inputStream)) {
break;
}
ऐसा करने पर, आप अपनी स्थिति को अनंत लूप, यानी while (1)
से भी बदल सकते हैं।
feof
कैसे काम करता है, इसके बारे में और स्पष्टीकरण यहां दिए गए हैं: C में feof() कैसे काम करता है
संबंधित सवाल
नए सवाल
printf
`Printf` स्वरूपित आउटपुट के लिए एक सामान्य कार्य है। सी और कई अन्य भाषाओं में संबंधित कार्यों का एक पूरा परिवार है। केवल इस टैग का उपयोग करें यदि प्रश्न सीधे 'प्रिंटफ' या संबंधित कार्यों से संबंधित है।