जवाबों:
आप इस तरह दोहरा '%' पोस्ट करके बच सकते हैं: %%
अपने उदाहरण का उपयोग करना:
printf("hello%%");
'%' चिह्न बचाना केवल प्रिंटफ के लिए है। यदि तुम करो:
char a[5];
strcpy(a, "%%");
printf("This is a's value: %s\n", a);
यह प्रिंट होगा: This is a's value: %%
%
विशिष्ट है printf
, सही है?
\045
संकलन-समय बच रहा है जो भाषा का हिस्सा है और %
संकलित होने पर बदल जाएगा । printf
एक रन-टाइम फ़ंक्शन है, इसलिए यह आपके स्ट्रिंग के बाइट्स से निपटता है, सी सोर्स कोड के साथ नहीं, और इसके अपने एस्केप सीक्वेंस हैं जो फ़ंक्शन के कुछ भाग हैं । संक्षेप में, printf
एक "भाषा के अंदर भाषा" है, और printf("This is a's value: %s\n", a);
जैसा परिणाम देता है printf("This is a's value: \045\0163\012", a);
।
printf("hello%c", '%');
:। हालाँकि, %%
बेहतर है क्योंकि यह दूसरे तर्क का उपयोग नहीं करता है।
जैसा कि अन्य लोगों ने कहा है, %%% से बच जाएगा।
हालाँकि, ध्यान दें कि आपको ऐसा कभी नहीं करना चाहिए:
char c[100];
char *c2;
...
printf(c); /* OR */
printf(c2);
जब भी आपको कोई स्ट्रिंग प्रिंट करनी हो, हमेशा, हमेशा, हमेशा इसका उपयोग करके प्रिंट करें
printf("%s", c)
समस्याओं के कारण से एक अंतर्निहित% को रोकने के लिए [स्मृति उल्लंघन, segfault, आदि]
यदि स्ट्रिंग में कोई प्रारूप नहीं हैं, तो आप उपयोग कर सकते हैं puts
(या fputs
):
puts("hello%");
यदि स्ट्रिंग में एक प्रारूप है:
printf("%.2f%%", 53.2);
जैसा कि टिप्पणियों में कहा गया है, उत्पादन में puts
एक जोड़ता है \n
और fputs
नहीं करता है।
puts
। मैंने कभी puts
स्ट्रिंग के मुद्रण के लिए नहीं सोचा और सीधे कूद गया printf
। अब और नहीं।
खुद के साथ ...
printf("hello%%"); /* like this */
नाइटपिक:
आप वास्तव %
में उस स्ट्रिंग से बच नहीं सकते हैं जो फ़ंक्शन के printf()
(और scanf()
) परिवार के लिए प्रारूप निर्दिष्ट करता है।
%
, में printf()
(और scanf()
) कार्यों का परिवार, एक रूपांतरण विनिर्देश शुरू होता है। रूपांतरण विनिर्देशन के नियमों में से एक में कहा गया है कि रूपांतरण विनिर्देशक के %
रूप में (तुरंत %
उस रूपांतरण विनिर्देश को शुरू करने के बाद) एक '%'
चरित्र को बिना किसी तर्क के लिखे जाने का कारण बनता है ।
स्ट्रिंग में वास्तव में 2 '%'
अक्षर हैं (जैसा कि भागने वाले वर्णों के विपरीत: "a\bc"
3 गैर-अशक्त वर्णों "a%%b"
वाला एक स्ट्रिंग है ; 4 गैर-शून्य वर्णों वाला एक स्ट्रिंग है)।
C में बैकस्लैश का उपयोग स्ट्रिंग्स में वर्णों से बचने के लिए किया जाता है। स्ट्रिंग्स एक विशेष चरित्र के रूप में% को नहीं पहचानेंगे, और इसलिए कोई भी आवश्यक नहीं होगा। Printf एक और मामला है: एक% प्रिंट करने के लिए %% का उपयोग करें।
आप उपयोग कर सकते हैं %%:
printf("100%%");
परिणाम है:
100%
आप गलत प्रारूप निर्दिष्ट का उपयोग कर रहे हैं जिसे आपको %%
मुद्रण के लिए उपयोग करना चाहिए %
। आपका कोड होना चाहिए:
printf("hello%%");
सी में उपयोग किए जाने वाले सभी अधिक प्रारूप विनिर्देशक पढ़ें ।
आप बस %
दो बार उपयोग कर सकते हैं , वह है"%%"
उदाहरण:
printf("You gave me 12.3 %% of profit");