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

C . में इसके बाद fgets ()/gets ()/scanf () होने पर स्कैनफ () के साथ समस्या

समस्या बताती है कि यदि स्कैनफ के बाद fgets ()/gets ()/scanf ()।

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

उदाहरण

#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 () और get () का उपयोग रन टाइम पर उपयोगकर्ता से स्ट्रिंग इनपुट लेने के लिए किया जाता है। मैं उपरोक्त कोड चलाता हूं जब हम पूर्णांक मान दर्ज करते हैं तो यह स्ट्रिंग मान नहीं लेगा क्योंकि जब हमने पूर्णांक मान के बाद नई लाइन दी थी, तो fgets() या get() वांछित इनपुट के बजाय इनपुट के रूप में नई लाइन लेगा जो "स्ट्रिंग" है। ।

scanf() उसके बाद एक scanf()

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

उदाहरण

#include<stdio.h>
int main() {
   int a;
   printf("enter q to quit");
   do {
      printf("\nenter a character and q to exit");
      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

स्पष्टीकरण

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


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

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

  1. विंडो 8 पिक्चर/पिन/ टेक्स्ट पासवर्ड को कैसे रीसेट करें?

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

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

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