2016-12-12 9 views
5

मैं पूर्ण ASCII चार्ट मुद्रित करने का प्रयास कर रहा था। इस बीच मैंने इस कोड को tutorialsschool.com वेबसाइट पर देखा।प्रिंटिंग एएससीआई चार्ट

#include<stdio.h> 
void main() { 
int i; 
for(i=0;i<=255;i++){ 
    printf("%d->%c\n",i,i); 
} 
} 

यह सही है, लेकिन समस्या यह है कि स्थानों के लिए प्रतीकों मुद्रण नहीं है (मैं कोड :: ब्लाकों आईडीई उपयोग कर रहा हूँ) इस तरह के 7,8,9,10 के रूप में और 32. मैं वास्तव में उलझन में हूँ है यह उन स्थानों पर मूल्यों को क्यों प्रिंट नहीं कर रहा है। और यह ऑनलाइन कंपाइलर्स पर कुछ अजीब आउटपुट दे रहा है। क्या यह कोड :: ब्लॉक की समस्या है। इन ASCII प्रतीकों को मुद्रित करने के लिए संभवतः अन्य कार्यक्रम क्या हो सकता है।

+6

संभावित डुप्लिकेट http://stackoverflow.com/questions/1472581/printing-chars-and-their- ascii-code-in-c) –

+4

[मैन isprint] (https://linux.die.net/man/3/isprint) –

+2

32 स्पेस कैरेक्टर है, 9 टैब है, आदि आप कम से कम ' % सी 'कुछ और देखें। – SurDin

उत्तर

3

आपको यह जानने में रुचि हो सकती है कि सभी ASCII वर्ण प्रिंट करने योग्य नहीं हैं।

उदाहरण के लिए, दशमलव 0 से 31 गैर प्रिंट करने योग्य ASCII मान हैं।

जो एक ही उल्लेख है this reference देखें।

कहा जाता है कि, एक होस्टेड वातावरण के लिए, main() का अनुमानित हस्ताक्षर int main(void) है, कम से कम।

+1

_All_ ASCII वर्ण _ प्रिंट नहीं हैं? _ – qxz

+2

हां, सब कुछ नहीं हैं, कुछ हैं। –

+0

@ q-l-p सभी प्रिंट करने योग्य नहीं हैं और सभी मुद्रित नहीं हैं दो अलग-अलग चीजें हैं !! –

6

मैं वास्तव में उलझन में हूँ कारण है कि यह उन स्थानों पर मूल्यों मुद्रण नहीं।

क्योंकि वे कोड गैर प्रिंट करने योग्य ASCII कोड है। नोट मानक ASCII कोड में केवल 7 बिट (यानी 128 वर्ण) हैं - और उनमें से कई गैर-प्रिंट करने योग्य (नियंत्रण कोड) हैं - इसलिए आप उन्हें प्रिंट करने में सक्षम होने की उम्मीद नहीं कर रहे हैं (उदाहरण के लिए, क्या आप बेल 0x07 प्रिंट कर सकते हैं?)

बहुत आसान समारोह -

http://www.asciitable.com/


और के रूप में मोहित जैन ने कहा, क्या तुम सच में अगर एक चरित्र इसे बाहर प्रिंट करने से पहले मानक सी स्थान पर प्रिंट करने योग्य है की जाँच करने के isprint फ़ंक्शन का उपयोग करना।

2

केवल ASCII पात्रों में से एक सबसेट प्रिंट करने योग्य हैं। कुछ इस तरह के लाइन-फ़ीड, घंटी, आदि के रूप में control characters हैं ..

विवरण: ASCII कोड 0 127 में लूप केवल एक पूरा ASCII चार्ट के लिए for(i=0;i<=127;i++) की जरूरत के लिए परिभाषित किया गया है।

-

OTOH, शायद एक सब char की एक पूरी चार्ट मुद्रित करने के लिए चाहता है। जब char मुद्रित होते हैं, तो उन्हें पहले unsigned char में परिवर्तित कर दिया जाता है। तो आइए हम सभी unsigned char का चार्ट बनाएं।

नोट: में 127 अक्षरों कोड 0 के लिए ASCII का उपयोग करना बहुत आम है, लेकिन सी

द्वारा निर्दिष्ट नहीं किया गया है, तो unsigned charप्रिंट करने योग्य है निर्धारित करने के लिए, isprint() समारोह का उपयोग करें। दूसरों के लिए, एक भागने अनुक्रम मुद्रित करें।

#include<ctype.h> 
#include<limits.h> 
#include<stdio.h> 

int main(void) { 
    unsigned char i = 0; 
    do { 
    printf("%4d: ", i); 
    if (isprint(i)) { 
     printf("'%c'\n", i); 
    } else { 
     printf("'\\x%02X'\n", i); 
    } 
    } while (i++ < UCHAR_MAX); 
    return 0; 
} 

नमूना उत्पादन

0: '\x00' 
    1: '\x01' 
    ... 
    7: '\x07' 
    8: '\x08' 
    9: '\x09' 
    10: '\x0A' 
    ... 
    31: '\x1F' 
    32: ' ' 
    33: '!' 
    34: '"' 
    ... 
    65: 'A' 
    66: 'B' 
    67: 'C' 
    ... 
126: '~' 
127: '\x7F' 
... 
255: '\xFF' 
[मुद्रण वर्ण और सी में अपने ASCII-कोड] (की
संबंधित मुद्दे