#include "stdio.h"
#include "string.h"
main()
{
char string[] = "october"; // october is 7 letters
strcpy(string, "september"); // september is 9 letters
printf("the size of %s is %d and the length is %d\n\n", string, sizeof(string), strlen(string));
return 0;
}
आउटपुट:sizeof बनाम strlen
सितंबर के आकार 8 और लंबाई 9
वहाँ कुछ मेरी वाक्य रचना या क्या गलत है क्या है?
आप सरणी 'स्ट्रिंग' के अंत में लिख रहे हैं। यह अपरिभाषित व्यवहार है। 'स्ट्रिंग' में केवल 8 वर्ण (7 "अक्टूबर" के लिए 7 और शून्य टर्मिनेटर के लिए 1) हो सकते हैं। जब आप 'strcpy' कहते हैं, तो आप इसमें 10 वर्ण लिख रहे हैं (9 "सितंबर" के लिए 9 और शून्य टर्मिनेटर के लिए 1), जिसका अर्थ है कि आप सरणी के अंत से पहले चले गए हैं और आसन्न स्मृति को ओवरराइट कर रहे हैं। – Marlon
ध्यान दें कि 'sizeof' की गणना * संकलन * समय पर की जाती है जहां' strlen' रन टाइम है। – Naveen
@ नवीन: जागरूक रहें कि यह जरूरी नहीं है कि वीएलए शामिल हैं। – caf