पहले अपने आखिरी सवाल उठाते हुए यह सुनिश्चित करना अधिकतम आकार बहुत आसान है। आमतौर पर आप स्ट्रिंग को पढ़ने के लिए fgets
का उपयोग करना चाहते हैं। यह आपको अधिकतम लंबाई निर्दिष्ट करने की अनुमति देता है। वैकल्पिक रूप से, आप स्कैनफ़ प्रारूप में अधिकतम आकार निर्दिष्ट कर सकते हैं (उदा।, "%29s"
या "%29[^\n]"
)। दोनों के बीच का अंतर ध्यान दें: fgets
के साथ आप बफर आकार निर्दिष्ट करते हैं, लेकिन scanf
के साथ आप बफर आकार से कम निर्दिष्ट करते हैं (यानी, पढ़ने के लिए वर्णों की अधिकतम संख्या)।
पहला सवाल का सवाल है: हाँ, वहाँ आम तौर पर बेहतर तरीके हैं। strncpy
एक अजीब कार्य है, मूल रूप से एक काफी विशिष्ट उद्देश्य के लिए लिखा गया है, और (ईमानदार होने के लिए) को मानक पुस्तकालय से हटा दिया जाना चाहिए, क्योंकि लगता है जैसे यह उपयोगी होना चाहिए, यह लगभग वास्तव में कभी नहीं है।
मैं शायद चीजों को थोड़ा अलग करता। , इस तरह आप तार का एक अधिकतम लंबाई
char* from = FileName;
char* to = out_file_name;
int curLen = 0;
do
{
*to++=*from++
}
while(*from && *from!='.' && ++curLen < ogSize);
*to='\0';
स्रोत
2010-08-31 23:40:51
आप पहले जोड़ें मतलब है? या स्ट्रिंग निष्कर्षण? काटें? –
मुझे लगता है कि आप "truncate" का मतलब है (आप स्ट्रिंग के अंत से तत्वों को हटाना चाहते हैं, इसे कम लंबाई में छोटा कर सकते हैं, है ना?) –
ट्रंकेट - वह एक है। धन्यवाद। क्षमा करें, अंग्रेजी मेरी पहली भाषा है .... हाँ पहले, यही कारण है कि यह इतना बुरा है। –