तो मुझे आश्चर्य है कि कमांड लाइन पैरामीटर हमेशा शून्य समाप्त हो जाते हैं? Google हां कहता है, और जीसीसी पर संकलन इंगित करता है कि यह मामला है, लेकिन क्या मैं हमेशा यह सच होने की गारंटी दे सकता हूं?मुख्य नल में char * argv [] तर्क हैं?
int main(int argc, char** argv)
{
char *p;
for(int cnt=1; cnt < argc; ++cnt)
{
p = argv[cnt];
printf("%d = [%s]\n", cnt, p);
}
return 0;
}
$ MyProgram -arg1 -arg2 -arg3
1 = -arg1
2 = -arg2
3 = -arg3
हाँ, यह सच है। – kol
एक मिनट के लिए सोचें: * क्या होगा यदि वे पूर्ण रूप से समाप्त नहीं हुए थे? * –
एक मिनट के लिए सोच रहा है ... char [] और char * स्वचालित रूप से सी-शैली स्ट्रिंग को इंगित नहीं करता है। जाहिर है कि पूरी कमांड लाइन स्ट्रिंग को निरस्त कर दिया गया है लेकिन उसे कम से कम कमांड लाइन पर पारित वर्णों के प्रत्येक अलग-अलग सरणी में अनुवाद करने की आवश्यकता नहीं है। कमांड लाइन पर व्हाइटस्पेस को बाहर निकालने के लिए Argv के लिए यह आसान होगा और सी शून्य स्टाइल तारों को न तो समाप्त कर दिया गया है। – LeviX