लेकिन क्या होगा अगर मैं एक स्ट्रिंग प्रिंट करना चाहता हूं, तो प्रिंटफ ("हैलो") कहो, हालांकि मैंने पाया है कि यह किसी भी स्टेटमेंट के साथ 0 से समाप्त नहीं होता है
printf("%d", printf("hello"));
Output: 5
तुम गलत हो। यह कथन इस बात की पुष्टि नहीं करता है कि स्ट्रिंग शब्द शाब्दिक "hello"
शून्य चरित्र को समाप्त नहीं करता है '\0'
। इस कथन ने पुष्टि की कि समारोहprintf
स्ट्रिंग के तत्वों को तब तक आउटपुट करता है जब तक कि शून्य चरित्र का सामना नहीं किया जाता है।
जब आप ऊपर दिए गए कथन के अनुसार एक स्ट्रिंग शाब्दिक का उपयोग कर रहे होते हैं, तब संकलक स्थिर भंडारण अवधि के साथ एक चरित्र सरणी बनाता है जिसमें स्ट्रिंग शाब्दिक के तत्व होते हैं।
तो वास्तव में यह अभिव्यक्ति
printf("hello")
संकलक द्वारा संसाधित किया जाता है जैसे कि कुछ
static char string_literal_hello[] = { 'h', 'e', 'l', 'l', 'o', '\0' };
printf( string_literal_hello );
इसमें फंक्शन प्रिंटफ की Th क्रिया आप निम्नलिखित तरीके की कल्पना कर सकते हैं
int printf( const char *string_literal )
{
int result = 0;
for ( ; *string_literal != '\0'; ++string_literal )
{
putchar( *string_literal );
++result;
}
return result;
}
स्ट्रिंग शाब्दिक "हैलो" में संग्रहीत वर्णों की संख्या प्राप्त करने के लिए आप निम्नलिखित कार्यक्रम चला सकते हैं
#include <stdio.h>
int main(void)
{
char literal[] = "hello";
printf( "The size of the literal \"%s\" is %zu\n", literal, sizeof( literal ) );
return 0;
}
कार्यक्रम का आउटपुट है
The size of the literal "hello" is 6
);
, आप उस कोड के साथ क्या दिखाने का इरादा रखते हैं? आपने यह कैसे साबित किया है कि यह एक के साथ समाप्त नहीं होता है\0
?