2015-08-31 3 views
5

मैं printf का उपयोग कर एकाधिक वर्ण मुद्रित करना चाहता हूं। अब तक मेरे दृष्टिकोण इस-मैं एक प्रिंटफ के साथ एकाधिक चरित्र कैसे प्रिंट कर सकता हूं?

#include <stdio.h> 

int main() 
{ 
    printf("%*c\n", 10, '#'); 

    return 0; 
} 

है लेकिन यह केवल प्रिंट # से पहले 9 रिक्त स्थान।

मैं इस-

########## 

मैं ऐसा करने के तरीके यह पता लगाने में असमर्थ हूँ जैसे कि यह प्रिंट करना चाहते हैं। कृपया मेरी मदद करें?

+0

@ ओलाफ मुझे पता है कि मुझे बहुत सारी खोजों से जवाब मिल सकता है। लेकिन उनमें से सभी समझने के लिए लंबे और कठिन हैं। यहां मुझे मिनटों के भीतर जवाब मिला। इस साइट पर सवाल पूछने के लिए यह साइट नहीं है? –

+1

ठीक है, आपसे पूछने से पहले अपने आप को उचित प्रयास करने की उम्मीद है। अन्यथा SO जल्द ही एक ट्यूटोरियल साइट बन जाएगा, जो निश्चित रूप से इरादा नहीं है। यदि आपके पास अविश्वास के साथ मूलभूत समस्याएं हैं, तो अक्सर एक कदम वापस लेने और पुस्तक या ऑनलाइन-ट्यूटोरियल पढ़ने का अच्छा विचार होता है। अगर यह होमवर्क है, तो आपको अपने शिक्षक से पूछना चाहिए। एक अच्छा सवाल फीडबैक की सराहना करेगा और सवाल का जवाब देने के लिए अपना कोर्स अपनाएगा। – Olaf

+0

प्रारूप स्ट्रिंग के लिए: यह कुछ वाक्यों में बहुत स्पष्ट रूप से बताया गया है। इस प्रारूप-विकल्प वास्तव में कैसे काम करता है इस बारे में एक और उचित उत्तर हो सकता है। वैसे भी, आपको अपने जवाब मिल गए। – Olaf

उत्तर

7

आप printf उस तरह उपयोग नहीं कर सकते Ansi सी में दोहराव पात्रों मुद्रित करने के लिए मैं आप इस तरह एक पाश का उपयोग करने का सुझाव देते हैं -

#include <stdio.h> 

int main() 
{ 
    int i; 
    for(i = 0; i < 10; i++) putchar('#'); 

    return 0; 
} 

या यदि आप बिल्कुल कोई छोरों का उपयोग करने की इच्छा है, तो आप क्या कर सकते हैं इस-

#include <stdio.h> 
int main() 
{ 
    char out[100]; 
    memset(out, '#', 10); 
    out[10] = 0; 
    printf("%s", out); 

    return 0; 
} 

वैसे, का उपयोग करते हुए इस तरह printf की तरह कुछ भी works-

#include <stdio.h> 

int main() 
{ 
    printf("%.*s", 10, "############################################"); 

    return 0; 
} 
2

इस दस # वर्ण, एक नई पंक्ति के बाद प्रिंट होगा

char tenPounds[] = "##########"; 
printf("%s\n", tenPounds); 
+0

मुझे पहले से पता नहीं है कि कितने अक्षर मुझे प्रिंट करने की जरूरत है। लेकिन वैसे भी बहुत बहुत धन्यवाद। –

+0

अपने समाधान के लिए, बस 'puts (thenPounds) के साथ प्रिंट करें;' और आपको पिछली नई पंक्ति के साथ, वही दस वर्ण मिलेंगे। कुछ भी प्रारूपित करने की जरूरत नहीं है। –

2

मैं सबसे अच्छा तरीका लगता है, यदि आप उत्पादन होने के लिए वर्णों की संख्या को एक ऊपरी सीमा है:

printf("%.*s", number_of_asterisks_to_be_printed, 
"**********************************************************************"); 

मैं ऐसा लगता है कि यह करने के लिए यह सबसे कुशल, पोर्टेबल तरीका भी होगा।

0

मैं "सी प्रोग्रामिंग भाषा" पुस्तक (1-13 और 1-14 अभ्यास) में एक समान समस्या पर काम कर रहा हूं। मेरा खुद का कार्यक्रम, बस शुरू करने के लिए, दिए गए इनपुट में अंकों 0 से 9 की घटनाओं की गणना करना है, और प्रत्येक गणना के अनुसार '=' बार से बने क्षैतिज हिस्टोग्राम को मुद्रित करना है।

ऐसा करने के लिए, मैंने निम्न प्रोग्राम बनाया;

main() { 
    int c, ix, k; 
    int nDigit[10]; 

    //Instantiate zero values for nDigits array 
    for(ix = 0; ix < 10; ix++) { 
     nDigit[ix] = 0; 
    } 

    //Pull in input, counting digit occurrences and 
    //incrementing the corresponding value in the nDigit array 
    while ((c = getchar()) != EOF) { 
     if (c >= '0' && c <= '9') { 
      ++nDigit[c-'0']; 
     } 
    } 

    //For each digit value in the array, print that many 
    //'=' symbols, then a new line when completed 
    for (ix = 0; ix < 10; ix++) { 
     k = 0; 
     while (k <= nDigit[ix]) { 
      putchar('='); 
      k++; 
     } 
     printf("\n"); 
    } 

}

ध्यान दें कि यह कार्य प्रगति पर है। एक उचित हिस्टोग्राम में धुरी लेबल शामिल होना चाहिए, और सबसे महत्वपूर्ण बात यह है कि यह प्रोग्राम शून्य गणना के अंकों के लिए खाता नहीं है। यदि इनपुट में पांच 1 है लेकिन 0 नहीं है, तो यह दिखाने के लिए कोई दृश्य तरीका नहीं है कि हमारे पास कोई शून्य नहीं है। फिर भी, एकाधिक प्रतीकों को मुद्रित करने के लिए तंत्र काम करता है।

संबंधित मुद्दे

 संबंधित मुद्दे