मैं printf का उपयोग करके एक गैर-शून्य-समाप्त स्ट्रिंग कैसे मुद्रित कर सकता हूं, यह मानते हुए कि मुझे रनटाइम पर स्ट्रिंग की लंबाई पता है? एक साथ अन्य आर्ग के साथप्रिंटफ का उपयोग करके मैं एक गैर-शून्य-समाप्त स्ट्रिंग कैसे मुद्रित करूं?
उत्तर
printf("%.*s", length, string);
उपयोग:
printf("integer=%d, string=%.*s, number=%f", integer, length, string, number);
// ^^^^ ^^^^^^^^^^^^^^
सी में आप %.123s
प्रारूप के साथ उत्पादन के लिए अधिकतम लंबाई निर्दिष्ट कर सकते हैं। इसका मतलब है कि उत्पादन की लंबाई अधिकतम 123 वर्णों पर है। 123
को *
द्वारा प्रतिस्थापित किया जा सकता है, ताकि लंबाई को हार्ड-कोडेड के बजाय printf के तर्क से लिया जाएगा।
ध्यान दें कि यह मान लिया गया है string
किसी भी इंटीरियर अशक्त बाइट्स शामिल नहीं है (\ 0), %.123s
के रूप में केवल अधिकतम लंबाई नहीं सटीक लंबाई रोकें, और तार अभी भी रूप में माना जाता अशक्त-समाप्त हो गया।
यदि आप इंटीरियर नल के साथ एक गैर-शून्य-समाप्त स्ट्रिंग मुद्रित करना चाहते हैं, तो आप एक प्रिंटफ़ का उपयोग नहीं कर सकते हैं। बजाय fwrite
का उपयोग करें:
fwrite(string, 1, length, stdout);
विस्तृत विवरण के लिए @M.S.Dousti's answer देखें।
त्वरित उत्तर के लिए धन्यवाद ! – Mike
नोट: डिफ़ॉल्ट तर्क प्रचार के बाद, 'लंबाई' में 'int' टाइप होना चाहिए। यदि आपका 'लम्बाई' चर कुछ बड़ा है (उदा। 'Size_t') तो आपको इसे' (int) 'पर डालना चाहिए, अन्यथा आपका कोड उस प्लेटफ़ॉर्म पर टूट जाएगा जहां 'size_t'' int' से बड़ा है। –
@ केनीटीएम द्वारा प्रदान किया गया उत्तर बहुत अच्छा है, लेकिन एक सूक्ष्मता के साथ।
सामान्य रूप से, यदि स्ट्रिंग गैर-शून्य "समाप्त" है, लेकिन मध्य में एक शून्य चरित्र है, printf("%.*s", length, string);
अपेक्षा के अनुसार काम नहीं करता है। इसका कारण यह है %.*s
प्रारूप स्ट्रिंग printf
पूछता एक अधिकतम length
की वर्ण, बिल्कुलlength
पात्रों मुद्रित करने के लिए है।
मैं नहीं बल्कि ओपी के तहत एक टिप्पणी में अधिक सामान्य समाधान बताया प्रयोग करेंगे @William Pursell द्वारा:
#include <stdio.h>
int main(void) {
size_t length = 5;
char string[length];
string[0] = 'A';
string[1] = 'B';
string[2] = 0; // null character in the middle
string[3] = 'C';
string[4] = 'D';
printf("With printf: %.*s\n", length, string);
printf("With fwrite: ");
fwrite(string, sizeof(char), length, stdout);
printf("\n");
return 0;
}
आउटपुट::
fwrite(string, sizeof(char), length, stdout);
यहाँ एक नमूना कोड
With printf: AB
With fwrite: AB CD
'sizeof (char)' परिभाषा के अनुसार 1 है। इसके अलावा, 'NULL' विशेष रूप से एक शून्य * सूचक * स्थिर है। –
@ किथ थॉम्पसन, 'आकार (चार)' अधिक अर्थपूर्ण है। साथ ही, '0 \ '' 0' से अधिक अर्थपूर्ण है। लेकिन कौन परवाह करता है ;-) –
- 1. मैं एक बिट कैसे मुद्रित करूं?
- 2. मैं HTML.ActionLink का उपयोग करके एक छवि कैसे सम्मिलित करूं?
- 3. मैं printf का उपयोग करके एक नई लाइन कैसे जोड़ूं?
- 4. स्ट्रिंग वेरिएबल में मौजूद संदेश को मुद्रित करने के लिए मैं आउटपुटडिबगस्ट्रिंग का उपयोग कैसे करूं?
- 5. कोडइग्निटर का उपयोग करके मैं टेबल सॉर्टिंग कैसे करूं?
- 6. मैं एक DTrace कार्रवाई में CFStringRef कैसे मुद्रित करूं?
- 7. एसक्यूएल का उपयोग करके, मैं अपने मूल्यों का उपयोग करके पंक्तियों को कैसे अपडेट करूं?
- 8. रैकेट मैक्रोज़ का उपयोग करके मैं फ़ंक्शन कैसे परिभाषित करूं?
- 9. मैं एक्सएनए का उपयोग करके लाइन कैसे आकर्षित करूं?
- 10. libftdi v0.18 का उपयोग करके मैं एलईडी कैसे फ्लैश करूं?
- 11. मैवेन का उपयोग करके मैं प्रोग्राम कैसे निष्पादित करूं?
- 12. पावरशेल का उपयोग करके मैं XML को कैसे संपादित करूं?
- 13. ggplot2 का उपयोग करके मैं व्हायोलिन प्लॉट कैसे आकर्षित करूं?
- 14. रिलेवेटिवआउट का उपयोग करके मैं निम्नलिखित परिणाम कैसे प्राप्त करूं?
- 15. मैं ImageMagick का उपयोग करके एनिमेटेड gif कैसे फसल करूं?
- 16. मैं matplotlib autopct का उपयोग कैसे करूं?
- 17. मैं javap टूल का उपयोग कर एक जार फ़ाइल में कक्षा संरचनाओं को कैसे मुद्रित करूं?
- 18. मैं asp.net mvc में DataAnnotations का उपयोग करके स्ट्रिंग लम्बाई को कैसे सत्यापित करूं?
- 19. मैं प्रतीक का उपयोग करके सिनात्रा पैराम्स का उपयोग कैसे करूं?
- 20. जिन्जा टेम्पलेट इंजन का उपयोग करके मैं सरणी को स्ट्रिंग में कैसे परिवर्तित करूं?
- 21. Symfony2 में क्वेरी स्ट्रिंग का उपयोग करके मैं URL को कैसे रूट करूं?
- 22. मैं कॉलिंग विधि का नाम कैसे प्राप्त करूं और प्रतिबिंब का उपयोग करके टाइप करूं?
- 23. रूबी और नेट-एसएसएच का उपयोग करके, मैं नेट :: एसएसएच.स्टार्ट के साथ key_data पैरामीटर का उपयोग करके प्रमाणीकरण कैसे करूं?
- 24. MSBuild का उपयोग करके, मैं एक फ़ाइल की सामग्री में एक संपत्ति कैसे सेट करूं?
- 25. jQuery का उपयोग करके मैं पंक्तियों की एक श्रृंखला का चयन कैसे करूं?
- 26. मैं NHibernate के ICriteria API का उपयोग करके एक यादृच्छिक पंक्ति का चयन कैसे करूं?
- 27. मैं डैपर का उपयोग करके कुशलतापूर्वक एक समग्र वस्तु का चयन कैसे करूं?
- 28. कैपिबरा: मैं कैसाबारा का उपयोग करके एक पंक्ति में 3 पंक्तियों का परीक्षण कैसे करूं?
- 29. अल्बकोर का उपयोग करके मैं एक साथ कई परियोजनाओं का निर्माण कैसे करूं?
- 30. jquery का उपयोग करके, मैं सूची में एक नई सूची आइटम जोड़ने का एनीमेट कैसे करूं?
फ़्राइट का उपयोग क्यों नहीं करें? –
यदि यह शून्य समाप्त नहीं हुआ है, तो परिभाषा के अनुसार यह एक स्ट्रिंग नहीं है। –
यह केवल _c स्ट्रिंग_ नहीं है, क्योंकि यह अन्य भाषाओं में एक वैध स्ट्रिंग होगा .. और हालांकि "char की गैर-निरस्त सरणी" अधिक सटीक होगी, मुझे पूरा यकीन है कि यह सार्वभौमिक रूप से समझा गया था। – Willdorf