यह बहुत छोटा होना चाहिए। मैं एक बहुत ही बुनियादी सी कार्यक्रम के माध्यम से की तुलना स्ट्रिंग्स के लिए चल रहा था:सी शीर्षलेख फ़ाइलों के बिना कार्य
#include <stdio.h>
int strcmp(char *s, char *t);
int main()
{
printf("Returned: %d\n", strcmp("abc", "adf"));
return 0;
}
int strcmp(char *s, char *t)
{
printf("Blah\n");
while (*s++ == *t++)
{
if (*s == '\0')
return 0;
}
return *s - *t;
}
तो मैं मूल रूप से strcmp समारोह के अपने स्वयं के संस्करण को क्रियान्वित किया है पहले से ही string.h में मौजूद। जब मैं उपर्युक्त कोड चलाता हूं, तो मुझे वास्तविक अनुमानित परिणामों की बजाय 0, 1, या -1 (कम से कम परीक्षण मामलों के मेरे छोटे सेट के लिए) के वापसी मान दिखाई देते हैं। अब मुझे एहसास है कि ऐसा इसलिए है क्योंकि कोड strcmp के मेरे लागू संस्करण पर नहीं जाता है, लेकिन इसके बजाय फ़ंक्शन के string.h संस्करण का उपयोग करता है, लेकिन मैं उलझन में हूं कि यह मामला क्यों है जब भी मैं ' टी उचित हेडर फ़ाइल शामिल नहीं है।
इसके अलावा, यह देखकर कि यह हेडर फ़ाइल संस्करण का उपयोग कैसे करता है, क्या मुझे कोड को संकलित करते समय 'एकाधिक कार्यान्वयन' त्रुटि (या उन पंक्तियों के साथ कुछ) नहीं मिलनी चाहिए?
आपका अंतिम परीक्षण '* s ++ == * t ++' जो असफल हो सकता है, अभी भी आपके पॉइंटर्स को बढ़ाएगा ... क्या आप यही चाहते हैं? – Benoit
हाँ, आप सही हैं। वह अंतिम पंक्ति * (- एस) - * (- टी) –