मैं सी में perl के chomp()
फ़ंक्शन के एक eqivilent संस्करण को कार्यान्वित करने का प्रयास कर रहा हूं और मैं एक कोने मामले में आया हूं जहां तर्क के रूप में पारित एक स्ट्रिंग शब्दकोष सेगमेंटेशन गलती होगी (ठीक है तो)।सी में एक समारोह के लिए एक स्ट्रिंग अक्षर के गुजरने का पता लगाने के लिए कैसे?
उदाहरण chomp("some literal string\n");
वहाँ शाब्दिक मौसम का पता लगाने या मेरे कार्य नहीं करने के लिए C99 में एक परिभाषित रास्ता एक स्ट्रिंग पारित किया गया था है, ताकि मैं return
कर सकते हैं यह NUL के लिए बाहर का प्रयास करने के बिना?
char* chomp(char *s)
{
char *temp = s;
if (s && *s)
{
s += strlen(s) - 1;
if (*s == '\n')
{
*s = '\0';
}
}
return temp;
}
विषम। क्या आपका कंपाइलर एक स्ट्रिंग शाब्दिक को एक तर्क के रूप में पारित नहीं किया जाना चाहिए जिसे 'const char *' के रूप में घोषित नहीं किया गया है? –
@ एडम मारस: यह मानक द्वारा आवश्यक नहीं है। हालांकि, इसे संशोधित करने की कोशिश यूबी है। – dirkgently
एडम मारस: सादा सी में, स्ट्रिंग अक्षर में 'char *' टाइप किया गया है, न कि 'const char * '। – caf