Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C में main() से printf() का आउटपुट बदलना


प्रीप्रोसेसर मैक्रो का उपयोग करके फंक्शन के अंदर printf को रीडिफाइन किया जा सकता है। यह एक **खतरनाक और गैर-मानक** तकनीक है, केवल शैक्षणिक उद्देश्य के लिए।

उदाहरण

#include <stdio.h>

void changePrintf() {
    // इस स्कोप में printf को रीडिफाइन करता है
    #define printf(x, y) printf(x, 50)
}

int main() {
    int x = 40;
    changePrintf();  // मैक्रो सक्रिय होता है
    printf("%d\n", x);  // 50 प्रिंट करता है (x की जगह 50)
    x = 60;
    printf("%d", x);    // 50 प्रिंट करता है
    return 0;
}

आउटपुट

50
50

कैसे काम करता है

  • #define printf(x, y) printf(x, 50) मैक्रो changePrintf के स्कोप में printf को रीडिफाइन करता है।
  • दूसरा आर्गुमेंट y नजरअंदाज होकर 50 से बदल जाता है।
  • यह केवल उसी स्कोप/फाइल में प्रभावी होता है जहां मैक्रो परिभाषित है।

क्यों यह खराब अभ्यास है

  • प्रीप्रोसेसर मैक्रो लेक्सिकल स्कोप का पालन नहीं करते (फंक्शन स्कोप नहीं)।
  • कोड पठनीयता और रखरखाव को गंभीर रूप से नुकसान पहुंचाता है।
  • डिबगिंग अत्यंत कठिन हो जाती है।
  • स्टैंडर्ड लाइब्रेरी फंक्शन्स को रीडिफाइन करना अनडिफाइंड बिहेवियर हो सकता है।

सही विकल्प

  • कस्टम प्रिंटिंग के लिए अपना फंक्शन लिखें: void my_printf(const char *fmt, ...)।
  • लॉगिंग लेवल्स के लिए कंडीशनल कंपाइलेशन उपयोग करें।
  • C++ में std::cout रीडायरेक्शन (rdbuf()) उपयोग करें।
  1. C# में कंसोल का CursorSize कैसे बदलें? C# में कंसोल का CursorSize कैसे बदलें?

    C# में कंसोल का CursorSize बदलने के लिए C# में Console.CursorSize प्रॉपर्टी का उपयोग करें। उदाहरण आइए एक उदाहरण देखते हैं: using System; class Demo { public static void Main (string[] args) { Console.BackgroundColor = ConsoleColor.Blue; Console.WriteLine(बैकग्राउंड कलर बदला

  1. C# में कंसोल का CursorLeft कैसे बदलें? C# में कंसोल का CursorLeft कैसे बदलें?

    C# में कंसोल का CursorLeft बदलने के लिए Console.CursorLeft प्रॉपर्टी का उपयोग करें। उदाहरण आइए एक उदाहरण देखते हैं: using System; class Demo { public static void Main (string[] args) { Console.BackgroundColor = ConsoleColor.Blue; Console.WriteLine(बैकग्राउंड कलर बदला गया =

  1. टेक्स्ट की कैपिटलाइज़ेशन कैसे बदलें टेक्स्ट की कैपिटलाइज़ेशन कैसे बदलें

    कुछ उपयोगकर्ता हमसे सवाल पूछ रहे हैं कि क्या माइक्रोसॉफ्ट वर्ड, गूगल डॉक्स, या यहां तक कि टेक्स्ट एडिटर के बिना लोअरकेस अक्षरों को अपरकेस में (या इसके विपरीत) बदलने का कोई तरीका है। कुछ प्रभावित उपयोगकर्ता तो गलत कैपिटलाइज़ेशन में टाइप किए गए टेक्स्ट को डिलीट करने पर विचार कर रहे थे, लेकिन इस समस्या