मैंने हाल ही में एक सरल कार्यक्रम लिखा है जहां मैं गलती से कंसोल पर एक संदेश प्रदर्शित करने के लिए printf() के बजाय scanf() का उपयोग करता हूं। मैं संकलन समय त्रुटि प्राप्त करने की उम्मीद कर रहा था, लेकिन यह रनटाइम पर & दुर्घटनाओं के बिना ठीक संकलित करता है। मुझे पता है कि कीबोर्ड से इनपुट लेने के लिए scanf() का उपयोग किया जाता है। क्या मुझे प्रोग्राम में कोई त्रुटि नहीं मिलनी चाहिए?स्कैनफ() को स्ट्रिंग पास क्यों करना सी में ठीक संकलित करता है?
#include <stdio.h>
int main()
{
scanf("Hello world"); // oops, It had to be printf()
return 0;
}
क्या यह अपरिभाषित व्यवहार (यूबी) का आह्वान करता है? सी मानक में इसके बारे में कोई उल्लेख है? संकलन समय पर इसकी जांच क्यों नहीं की जाती है कि उचित & वैध तर्क स्कैनफ़() फ़ंक्शन में पास किए गए हैं या नहीं?
क्रैश पुन: उत्पन्न नहीं कर सकता है। कार्यक्रम मेरे लिए ठीक चलाता है। – EOF
कोड मेरे लिए सही दिखता है, और संकलित और चलाने पर सामान्य रूप से पूरा करना चाहिए। आप इसे 'क्रैश' कैसे जानते हैं? दुर्घटना के लक्षण क्या हैं? – CiaPan
मुझे यकीन है कि व्याकरण निहित है: संकलित करने में विफल होने के बिना और * बिना * क्रैशिंग –