ধরে নেওয়া যাক আমি একটি ফাংশন লিখতে চাই যা সিতে দুটি স্ট্রিং সংহত করে আমি এটি যেভাবে লিখব তা হ'ল:
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');
}
কোন পথে পছন্দ হয়? কে ও আর কীভাবে কোড লিখতে উত্সাহিত বা নিরুৎসাহিত করা হয়েছে? আমি বিশ্বাস করি আমার সংস্করণটি অন্য ব্যক্তিদের দ্বারা পড়া আরও সহজ হবে।
while (*s++ = *t++);
(আমার সি খুব মরিচা, অপারেটর নজিরের জন্য আমার কি সেখানে পেরেন দরকার?) কে ওআরআর তাদের বইয়ের নতুন সংস্করণ প্রকাশ করেছিল? তাদের মূল বইটিতে চূড়ান্ত সংক্ষিপ্ত এবং পরিচয়মূলক কোড ছিল।
'\0'
থেকে t
( while
প্রথম প্রস্থানের)। s
এটি একটি '\0'
পরিণতি ছাড়াই ফলাফল স্ট্রিংটি ছাড়বে (যদি না স্মৃতি অবস্থানটি ইতিমধ্যে শূন্য না থাকে)। দ্বিতীয় কোড ব্লক লুপটি '\0'
প্রস্থান করার আগে সমাপ্তির অনুলিপি তৈরি করবে while
।