को छोड़ दिया जाता है नीचे दिए गए कोड में पाश में, scanf("%[^\n]s",array)
काम नहीं कर रहा। यह इनपुट की प्रतीक्षा नहीं करता है और छोड़ दिया जाता है। लेकिन %
से पहले एक स्थान समस्या को हल करता है। क्यूं कर?% [^ N] scanf में निवेश के लिए इंतजार नहीं करता है और
यहाँ गलत कार्यक्रम है:
#include <string.h>
#include <stdio.h>
int main()
{
int t;
scanf("%d",&t);
while(t--){
char arr[199];
scanf("%[^\n]s",arr);
printf("%s",arr);
}
return 0;
}
यहाँ सही कोड है:
#include <string.h>
#include <stdio.h>
int main()
{
int t;
scanf("%d",&t);
while(t--){
char arr[199];
scanf(" %[^\n]s",arr);
printf("%s",arr);
}
return 0;
}
यह अपेक्षा के अनुरूप काम करने के लिए %
से पहले एक स्थान की आवश्यकता क्यों है?
ऐसा इसलिए है क्योंकि आपके पास एक नई लाइन है जिसे छोड़ने की आवश्यकता है। पहला स्कैनफ सिर्फ संख्या को पढ़ता है और आपके पास अभी भी इनपुट में नई लाइन शेष है। और लूप में आपके स्कैनफ़ेस बचे हुए न्यूलाइन को अवशोषित करने के लिए स्थान के बिना नई लाइन में नहीं पढ़े जाएंगे। वास्तव में आप लूप में केवल scanf ("% s", arr) का उपयोग कर सकते हैं। – Shiping
आप इसे जांचना चाहेंगे: https://stackoverflow.com/questions/45038176/not-able-to-input-a-string-with-spaces-in-a-loop-in-c/45038767?noredirect= 1 # टिप्पणी 77052162_45038767 मैंने हाल ही में उत्तर दिया –