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

C में scanf() की समस्या जब इसके बाद fgets()/gets()/scanf() हो


समस्या यह बताती है कि यदि scanf के बाद fgets()/gets()/scanf() हो तो कामकाज या आउटपुट क्या होगा।

scanf() के बाद fgets()/gets()

उदाहरण

#include <stdio.h>

int main() {
    int x;
    char str[100];
    scanf("%d", &x);
    fgets(str, 100, stdin);
    printf("x = %d, str = %s", x, str);
    return 0;
}

आउटपुट

Input: 30 String
Output: x = 30, str =

व्याख्या

fgets() और gets() का उपयोग रनटाइम पर यूजर से स्ट्रिंग इनपुट लेने के लिए किया जाता है। उपरोक्त कोड में जब हम चलाते हैं तो पूर्णांक मान दर्ज करने के बाद यह स्ट्रिंग मान नहीं लेगा क्योंकि जब हम पूर्णांक मान के बाद नई लाइन देते हैं, तो fgets() या gets() वांछित इनपुट "String" के बजाय नई लाइन को इनपुट के रूप में ले लेगा।

scanf() के बाद scanf()

बार-बार scanf() के बाद scanf() प्राप्त करने के लिए हम एक लूप का उपयोग कर सकते हैं।

उदाहरण

#include <stdio.h>

int main() {
    int a;
    printf("quit करने के लिए q दर्ज करें");
    do {
        printf("\nएक कैरेक्टर दर्ज करें और बाहर निकलने के लिए q");
        scanf("%c", &a);
        printf("%c\n", a);
    } while (a != 'q');
    return 0;
}

आउटपुट

Input: abq
Output: enter q to quit
enter a character and q to exita
a
enter a character and q to exit
enter a character and q to exitb
b
enter a character and q to exit
enter a character and q to exitq

व्याख्या

यहां हम एक अतिरिक्त लाइन 'enter a character and q to exit' देख सकते हैं एक अतिरिक्त नई लाइन के बाद, ऐसा इसलिए है क्योंकि हर बार scanf() बफर में एक नई लाइन कैरेक्टर छोड़ देता है जिसे इसके बाद आने वाले अगले scanf() द्वारा पढ़ा जाता है। इस समस्या को हल करने के लिए scanf() में टाइप स्पेसिफायर के साथ '\n' का उपयोग करें जैसे scanf("%c\n"); या दूसरा विकल्प है कि हम अतिरिक्त getchar() या scanf() का उपयोग करके अतिरिक्त नई लाइन पढ़ सकते हैं।

  1. [FIX]  unix:///var/run/docker.sock  पर डॉकर डेमन से कनेक्ट नहीं हो सकता [FIX] 'unix:///var/run/docker.sock' पर डॉकर डेमन से कनेक्ट नहीं हो सकता

    डॉकर अपनी क्षमता के कारण कंटेनर्स का उपयोग करके एप्लिकेशन को आसानी से बनाने, डेप्लॉय करने और चलाने के लिए अधिक से अधिक लोकप्रिय हो रहा है। कंटेनर्स डेवलपर्स को एक एप्लिकेशन को उसकी सभी लाइब्रेरीज और निर्भरताओं के साथ पैकेज करने की अनुमति देते हैं, ताकि इसे एक पूर्ण पैकेज के रूप में डेप्लॉय किया जा स

  1. भूले हुए विंडोज 8 पिन, पिक्चर या टेक्स्ट पासवर्ड को रीसेट करना - चरण-दर-चरण गाइड भूले हुए विंडोज 8 पिन, पिक्चर या टेक्स्ट पासवर्ड को रीसेट करना - चरण-दर-चरण गाइड

    माइक्रोसॉफ्ट का अब तक का सबसे सुरक्षित ऑपरेटिंग सिस्टम होने के नाते, विंडोज 8 दो नए पासवर्ड प्रकार पेश करता है जिनका उपयोग आप अपने विंडोज खाते में लॉग इन करते समय कर सकते हैं: एक चार अंकों का पिन और एक पिक्चर पासवर्ड। एक पिन लॉग इन करने का एक तेज़ तरीका प्रदान करता है, और एक पिक्चर पासवर्ड आपको ऐसा

  1. विंडोज, मैक और ऑनलाइन पर गूगल अर्थ रिकॉर्ड कैसे करें – पूरी गाइड विंडोज, मैक और ऑनलाइन पर गूगल अर्थ रिकॉर्ड कैसे करें – पूरी गाइड

    ये सचमुच एक छोटी सी दुनिया है। सोच रहे हैं हमारा क्या मतलब है? अगर दुनिया भर में घूमना आपकी ख्वाहिश है, तो आपको अपनी ट्रैवल टिकट पर सैकड़ों या हजारों रुपये खर्च करने की जरूरत नहीं। इसके बजाय, गूगल अर्थ जैसा प्लेटफॉर्म आपकी विश्व-भ्रमण की इच्छाओं को पूरा कर सकता है। आपको बस लोकेशन डालनी है और आपको उ