संभव डुप्लिकेट:
क्या आपके पास स्ट्रिंग में कैरिएस रिटर्न को हटाने के लिए सी कोड का एक उदाहरण है?
सरल समाधान संभवत: स्रोत और गंतव्य के लिए पॉइंटर्स के साथ, वर्ण द्वारा स्ट्रिंग वर्ण को संसाधित करने के लिए:
#include & lt; stdio.h & gt; #include & lt; string.h & gt; Int main (शून्य) {char str [] = "यह दो पंक्ति \ r \ n डॉस लाइन के अंत के साथ स्ट्रिंग है। \ R \ n"; Printf ("% d [% s] \ n", स्ट्रेलन (str), str); // इस अनुभाग में // ======================== प्रासंगिक कोड। Char * src, * dst; के लिए (src = dst = str; * src! = '\ 0'; src ++) {* dst = * src; अगर (* dst! = '\ R') dst ++; } * Dst = '\ 0'; // ======================= printf ("% d [% s] \ n", strlen (str), str); }
यह दो बिंदुओं को शुरू में एक ही सेट करता है। यह फिर एक चरित्र की प्रतिलिपि बनाता है और हमेशा स्रोत सूचक को बढ़ाता है। हालांकि, यह केवल गंतव्य सूचक को बढ़ाता है यदि चरित्र कैरिज रिटर्न नहीं था। इस तरह, सभी कैरिएस रिटर्न को अगले अक्षर या शून्य टर्मिनेटर द्वारा ओवरराइट किया जाता है। आउटपुट है:
51 [यह डॉस लाइन एंडिंग्स के साथ एक दो-लाइन स्ट्रिंग है। ] 49 [यह डॉस लाइन एंडिंग के साथ एक दो-लाइन स्ट्रिंग है। ]
यह अधिकांश तारों के लिए पर्याप्त होगा यदि आपकी तार वास्तव में बड़े पैमाने पर आकार में (या ऐसा कुछ है जिसे आप कई प्रत्येक सेकंड में करना चाहते हैं), तो आप strchr
को देख सकते हैं आधारभूत समाधान के बाद से पुस्तकालय फ़ंक्शन को सबसे अधिक अनुकूलित किया जाएगा।
Comments
Post a Comment