मान लेते हैं कि मैं एक फ़ंक्शन लिखना चाहता हूं जो सी में दो तारों को मिलाता है। जिस तरह से मैं इसे लिखूंगा वह है:
void concat(char s[], char t[]){
int i = 0;
int j = 0;
while (s[i] != '\0'){
i++;
}
while (t[j] != '\0'){
s[i] = t[j];
i++;
j++;
}
s[i] = '\0';
}
हालांकि, अपनी पुस्तक में के एंड आर ने इसे अलग तरीके से लागू किया, विशेष रूप से जितना संभव हो उतना लूप के स्थिति भाग में शामिल किया गया:
void concat(char s[], char t[]){
int i, j;
i = j = 0;
while (s[i] != '\0') i++;
while ((s[i++]=t[j++]) != '\0');
}
कौन सा तरीका पसंद किया जाता है? क्या यह K & R के कोड को लिखने के लिए प्रोत्साहित या हतोत्साहित करता है? मेरा मानना है कि मेरे संस्करण को अन्य लोगों द्वारा पढ़ना आसान होगा।
while (*s++ = *t++);
(मेरी सी बहुत जंग लगी है, क्या मुझे ऑपरेटर पूर्वता के लिए वहां परेंस की आवश्यकता है?) क्या के एंड आर ने अपनी पुस्तक का एक नया संस्करण जारी किया? उनकी मूल पुस्तक में बहुत संक्षिप्त और मुहावरेदार कोड थे।
'\0'
से समाप्ति की प्रतिलिपि नहीं देगा । यह परिणामी स्ट्रिंग को एक समाप्ति के बिना छोड़ देगा (जब तक कि मेमोरी स्थान पहले से ही शून्य नहीं था)। दूसरा कोड ब्लॉक लूप से बाहर निकलने से पहले समाप्त होने की प्रतिलिपि बना देगा । t
while
s
'\0'
'\0'
while