जवाबों:
आप इस तरह दोहरा '%' पोस्ट करके बच सकते हैं: %%
अपने उदाहरण का उपयोग करना:
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");