मेरे पास एक सी प्रोग्राम है जो शब्द के अक्षर से अक्षर प्रिंट करता है। मैंने इस कार्यक्रम को इस लिंक से संदर्भित किया है https://www.tutorialgateway.org/c -प्रोग्राम-टू-प्रिंट-कैरेक्टर-इन-ए-स्ट्रिंग/. अगर मैं इस प्रोग्राम को ऑनलाइन सी कंपाइलर में चलाता हूं तो यह सटीक परिणाम देता है, लेकिन टर्बो सी ++ में काम नहीं कर रहा है

#include <stdio.h>
int main()
{
    char str[100];
        
    printf("\n Please Enter any String  :  ");
    scanf("%s", str);
        
    for(int i = 0; str[i] != '\0'; i++)
    {
        printf("The Character at %d Index Position = %c \n", i, str[i]);
    }
    return 0;
}

यह प्रोग्राम किसी भी त्रुटि के माध्यम से नहीं है, लेकिन मुझे नहीं पता कि यह प्रोग्राम परिणाम को प्रिंट क्यों नहीं करता है।

0
manju 6 फरवरी 2021, 20:04

2 जवाब

सबसे बढ़िया उत्तर

scanf() के बजाय fgets(str, 100, stdin) आज़माएं। किसी लाइन को बफर में पढ़ने का यह सामान्य तरीका है। जब मैंने scanf() का उपयोग किया तो मुझे केवल आउटपुट का हिस्सा मिला क्योंकि यह एक स्थान पर एक स्ट्रिंग को पढ़ना बंद कर देगा।

2
Joshua 6 फरवरी 2021, 20:20

IDK आपका आउटपुट क्या है, लेकिन यहाँ मेरा है:

 Please Enter any String  :  Hell got loose
The Character at 0 Index Position = H 
The Character at 1 Index Position = e 
The Character at 2 Index Position = l 
The Character at 3 Index Position = l

यह सामान्य है, इसके कारण:

गैर-श्वेत-स्थान वर्णों के अनुक्रम से मेल खाता है; अगला पॉइंटर कैरेक्टर एरे के लिए एक पॉइंटर होना चाहिए जो इनपुट अनुक्रम और टर्मिनेटिंग नल कैरेक्टर ('\ 0') को होल्ड करने के लिए काफी लंबा है, जो स्वचालित रूप से जोड़ा जाता है। इनपुट स्ट्रिंग सफेद स्थान पर या अधिकतम फ़ील्ड चौड़ाई पर रुकती है, जो भी पहले हो।

यह scanf से लिया गया है।

संपादित करें: केवल मनोरंजन के लिए, आप scanf का उपयोग करके ऐसा कर सकते हैं

scanf("%[^\n]",str);

यह \n नई लाइन को '\0' से बदल देगा।

नोट: @ जोशुआ का उत्तर अधिक सुरक्षित है, यदि आप जानना चाहते हैं कि सिर्फ Google क्यों मुझे scanf() का उपयोग नहीं करना चाहिए

1
KPCT 6 फरवरी 2021, 22:34