मैंने थोड़ा सा कोड बनाया है, जो दोहरे अक्षरों के लिए एक इनपुट टेक्स्ट की जांच कर सकता है। अगर मेरे पास मेरे मुख्य फ़ंक्शन के अंदर मेरा पूरा कोड था, तो मुझे काम करना पड़ा, लेकिन जब मैं एक अतिरिक्त फ़ंक्शन बनाना चाहता हूं तो कुछ परेशानी होती है। मुझे जो त्रुटि मिल रही है वह निम्न है: "त्रुटि: नियंत्रण गैर-शून्य फ़ंक्शन के अंत तक पहुंच सकता है", जिसे मैंने पहचाना है कि सिस्टम मेरे count_double_characters फ़ंक्शन से वापसी मान की पहचान नहीं कर सकता है।

क्या आप मुझे यह समझने में मदद कर सकते हैं कि मैं क्या गलत कर रहा हूं?

#include <stdio.h>
#include <string.h>

int count_double_characters(char *ch);

int main(void)

{
char input[400];
printf("Write the text you want to check: ");
fgets(input, sizeof(input), stdin);
count_double_characters(input);
}   


int count_double_characters(char *ch)
{
char n = strlen(ch);  
int count_double = 0;

for (int i = 0; i < n; i++)
{
    for (int j = i + 1; j < n; j++)
    {
        if (ch[i] == ch[j])
        {
            count_double++;
        }
    }

}

if (count_double > 0)
    {
        char s = printf("Its a double!\n");
        return s;
    }
    
else if (count_double == 0)
    {
        char d = printf("Looks good\n");
        return d;
    }
}
2
Kasper 6 नवम्बर 2020, 15:05

1 उत्तर

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

अपने कोड के इस खंड पर विचार करें:

if (count_double > 0)
    {
        char s = printf("Its a double!\n");
        return s;
    }
    
else if (count_double == 0)
    {
        char d = printf("Looks good\n");
        return d;
    }

  // if count_double is less than 0, the program goes here
  // but there is non return statement, meaning that the function
  // does not return any value.
  // That what's the error message is telling you
}

अब आप मुझे बताएंगे कि count_double कभी भी 0 नहीं हो सकता, जो कि सही है, लेकिन जाहिर तौर पर कंपाइलर इसका पता लगाने के लिए पर्याप्त स्मार्ट नहीं है।

ठीक करने के लिए, आप बस if (count_double == 0) को छोड़ सकते हैं या इसे if (count_double <= 0) से बदल सकते हैं।

1
Jabberwocky 6 नवम्बर 2020, 12:24