tl; dr: scanf("%s\n", tictac);
के साथ आप एक स्ट्रिंग पढ़ने के लिए कह रहे हैं, इसके बाद सभी रिक्त पात्रों को अनदेखा करें और फिर एक नई पंक्ति पढ़ें। समस्या के बाद से सभी रिक्त स्थान को पहले एक से अनदेखी कर रहे हैं वहाँ पहले जो कम से कम एक गैर खाली चरित्र दर्ज करें और दूसरा इसलिए कुछ कचरा के लिए की जरूरत गैर खाली इनपुट दूसरे से पहले दर्ज करें (होना चाहिए दर्ज स्वीकार किया जाता है।)।
स्कैनफ़ के साथ \ n का उदाहरण उदाहरण है।
char x, y;
scanf("%c", &x);
scanf("%c", &y);
printf("%c %c", x,y);
इस कोड को आप देखेंगे साथ
एक चरित्र में प्रवेश करने और दर्ज सीधे printf
बयान के लिए जाना जाएगा दबाने कि। ऐसा इसलिए है क्योंकि दूसरा स्कैनफ वाई में कैरिज रिटर्न (जो खुद ही एक चरित्र है) पढ़ता है।
scanf("\n%c", &y); // This is recommended to do if you have a sequence of scanfs (but not on the first one).
यह एक आवारा गाड़ी वापसी
\n
साथ नजरअंदाज कर दिया जाएगा (या मेल खाने) के साथ
। और सही चरित्र y को पढ़ा जाएगा।
अब जब हम अपने कोड के लिए आते हैं
scanf("%s\n", tictac);
%s
बताता scanf
जब तक यह एक blank character
(space, tab or new line
) पाता है पढ़ने के लिए और उसके बाद यहाँ पकड़ एक गैर रिक्त स्थान तक सभी रिक्त रिक्त स्थान की अनदेखी कर रहा है चरित्र से मुलाकात की गई है। तो अपने scanf
पर ध्यान नहीं देगा दर्ज आप दबाया जब आप स्ट्रिंग में प्रवेश किया। और किसी भी खाली चरित्र है कि यह इस प्रकार है (दूसरी पंक्ति और प्रेस पर रिक्त स्थान में प्रवेश में प्रवेश की कोशिश करो।)
जिसका मतलब है यह ठीक काम करेंगे (चार संस्करण के विपरीत)
scanf("%s", tictac);
scanf("%s", tictac2);
असल Windows
पर "% s" पुस्तकालय का कारण बनता है क्योंकि यहतक इनपुट स्ट्रिंग को पढ़ने के लिएकुछ सफेद स्थान पाता है, बराबर फॉर्मेट स्पेसिफायर है "% [^ \ 0x20 \ t \ n]" है, जो पुस्तकालय का निर्देश स्ट्रिंग जब तक यह एक अंतरिक्ष चरित्र का सामना करना पड़ता पढ़ने के लिए (\ 0x20), एक टैब वर्ण (\ टी), या एक न्यू लाइन चरित्र (\ n)।
लेकिन जब से आप स्पष्ट रूप से कहा है कि scanf
\n
scanf("%s\n", tictac);
^^
जब तक यह एक और \n
(एक गैर खाली चरित्र के बाद) हो जाता है, क्योंकि पहले एक के बाद एक %s
द्वारा इस्तेमाल किया गया था यह इंतजार करेंगे मैच के लिए ।
आप सी में नामस्थान std; 'का उपयोग नहीं करते हैं, आपको इसे C++ में भी उपयोग नहीं करना चाहिए। – sobol6803
@ sobol6803 यह सी ++ में एक त्वरित प्रदर्शन के रूप में एक वास्तविक कोड के रूप में लिखा गया था :) – Novellizator