कृपया इस कोड में क्या गलत है?


सी
#include <stdio.h>

int main()
{
    int number1;
    float number2;

    printf("Enter Integer:");
    scanf("%d",&number1);

    printf("Enter Float:");
    scanf("\n%f",&number2);

    printf("The Resulting Integer Is: %d",&number1);
    printf("\nThe Resulting Float Is: %f",&number2);

    return 0;
}

मैंने क्या प्रयास किया है:

कृपया इस कोड में क्या गलत है?

समाधान 1

सी++
printf("The Resulting Integer Is: %d",&number1);
printf("\nThe Resulting Float Is: %f",&number2);

समस्या कोड की इन दो पंक्तियों में है। कार्यक्रम printf उम्मीद करता है कि इसके तर्कों को मूल्य के आधार पर पारित किया जाएगा और आप उनके पते पारित कर रहे हैं। इसे ठीक करने के लिए आप एम्परसेंड को हटा सकते हैं ताकि यह इस तरह दिखे:

सी++
printf("The Resulting Integer Is: %d\n", number1);
printf("The Resulting Float Is: %f\n", number2);

ध्यान दें कि मैंने नई पंक्ति का वर्ण स्थानांतरित कर दिया है। मैं हमेशा नई पंक्ति वर्ण के साथ पाठ की एक पंक्ति का अनुसरण करना पसंद करता हूं ताकि बाद की पंक्तियां कॉलम शून्य से शुरू हों। यह एक ऐसी आदत है जो मुझे बहुत समय पहले लगी थी।

एक अन्य नोट – मैं फ़ंक्शन का उपयोग करना पसंद करता हूं fgets[^] कंसोल से इनपुट प्राप्त करने के लिए। इसमें स्ट्रिंग में नया लाइन कैरेक्टर शामिल है और इसका व्यवहार इससे कम विचित्र है स्कैनएफ[^]. फिर कोई कॉल कर सकता है ट्रेलर[^] और एटोफ़[^] उनके संबंधित संख्यात्मक मान प्राप्त करने के लिए। आपके उद्देश्यों के लिए, यह मायने रखता है कि नई पंक्ति वर्ण शामिल है क्योंकि रूपांतरण फ़ंक्शन इसे अनदेखा करते हैं।

समाधान 2

जब आप & नंबर 1 और नंबर 2 का पता देकर उन्हें प्रिंट करते हैं, तो आप वह पता नहीं चाहते जो आप चाहते हैं।

सी++
#include <stdio.h>

int main()
{
	int number1;
	float number2;

	printf("Enter Integer:");
	scanf("%d", &number1);

	printf("Enter Float:");
	scanf("\n%f", &number2);

	printf("The Resulting Integer Is: %d", number1);
	printf("\nThe Resulting Float Is: %f", number2);

	return 0;
}

コメント

タイトルとURLをコピーしました