Προς το περιεχόμενο

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • 0
B@GOS.GR

Ascii (integer) --> Char στην C ..! πώς.?

Ερώτηση

Καλησπέρα σας ....

 

Σας ζητώ την βοήθεια σας Για να τελείωσω μια άσκηση ..!

 

Πώς Μπορώ να μετατρέψω στη C εναν Αριθμό Ascii (πχ AsciiINT = 65;) να μετετραπει σε Χαρακτήρα .. ( Char = A;)

 

Έχω καταφέρει να κανω το ανάποδο αλλά εδώ καπου κολάω :rolleyes:

 

Σας Ευχαριστώ....

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

Προτεινόμενες αναρτήσεις

:whistle:Ποποοοοο..! Ντέπομαι ..!:fear:

 

δεν ειχα ψιλιαστεί τέτιο τρόπο Και ψαχνόμουν σε συναρτήσεις .... :o:eek::shock:

 

 

Παντώς Σε Ευχαριστώ..!

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
Επί του θέματος, νομίζω πως πρέπει:

 

>#define FIRST_CHAR 128

int main()
{
 char Achar[25];

for(i=0; i<24; i++)
 {
    Achar[i]=FIRST_CHAR+i;
  }
[color="Red"]Achar[25]=0;  [/color]
 printf("%s\n",Achar); 

return 0;
}

 

Γιατί αμέσως μετά το τυπώνεις ως sting άρα χρειάζεσαι τον null terminating character. Αν και νομίζω πιο σωστό είναι να τον βάλεις ως '/0'

 

Επίσης θα μπορούσες να γράψεις αντί για 128, 'Α' που θα ήταν και καλά πιο γενικό αλλά δεν ξέρω και πως θα το πάρει ο compiler.

Έχεις δίκιο για το null terminating character, αλλά όπως είπε και ο georgemarinos το Achar[25] θα ήταν εκτός της array. Επειδή ο [email protected] θέλει ένα κενό στο τέλος της array, νομίζω πως τελικά θα πρέπει να είναι έτσι:

>
#define FIRST_CHAR 128

int main()
{
 char Achar[26];

for(i=0; i<24; i++)
 {
    Achar[i]=FIRST_CHAR+i;
  }
Achar[24]=32; 
Achar[25]='\0';
 printf("%s\n",Achar);  

return 0;
}

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
ώπα ναι Σωστα .. το παρέληψα αυτο ....

 

αλλα εστο και έτσι:

 

>

[color=#000000][color=#ff8000]#define FIRST_CHAR 128

[/color][color=#0000bb]int main[/color][color=#007700]()
{
 [/color][color=#0000bb]char Achar[/color][color=#007700][[/color][color=#0000bb]26[/color][color=#007700]][/color][color=#007700];

for([/color][color=#0000bb]i[/color][color=#007700]=[/color][color=#0000bb]0[/color][color=#007700]; [/color][color=#0000bb]i[/color][color=#007700]<[/color][color=#0000bb]25[/color][color=#007700]; [/color][color=#0000bb]i[/color][color=#007700]++)
 {
    [/color][color=#0000bb]Achar[/color][color=#007700][[/color][color=#0000bb]i[/color][color=#007700]]=[/color][color=#0000bb]FIRST_CHAR[/color][color=#007700]+[/color][color=#0000bb]i[/color][color=#007700];
  }
Achar[25]=32;  
 [/color][color=#0000bb]printf[/color][color=#007700]([/color][color=#dd0000]"%s\n"[/color][color=#007700],[/color][color=#0000bb]Achar[/color][color=#007700]);  [/color][/color]

Πάλι το ίδιο μου Γηνετε :cry:

 

 

ρε φιλε, ποσα γραμματα εχει η ελληνική αλφαβήτα?

24 σωστα?

άρα πόσους χαρακτήρες πρέπει να αλλαξεις?

24

αρα γιατι

> for(i=0; i<25; i++)

επιμενεις να αλλαζεις 25 χαρακτηρες?

οταν κανεις

αυτο

>[color=#000000][color=#007700] Achar[25]=32; [/color][/color]

αλλαζεις τον 26 χαρακτηρα και πραγματι τον κανεις space

 

αλλα πιο πριν εχεις αλλαξεις και τον 25 και τον εχεις κανει 'α'

 

η λυση σου ειναι

> for(i=0; i<[b]24[/b]; i++)

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

παρακαλω φιλε, μη ντρεπεσαι ποτε για τετοια λαθακια, ειναι φυσιολογικα.... (αν και εκνευριστικα χρονοβορα)

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

Γενικά, ότι σου πε ο πιο πάνω.

 

Gnome: Για να αλλάξεις το character encoding Terminal > Character Enconding > Add or Remove στην κονσόλα του Gnome.

Για τα άλλα δεν θυμάμαι τώρα. Και σε Windows φαντάζομαι κάτι παρόμοιο θα είναι δοκίμασε δεξί κλίκ ή κάπου ψηλά αριστερά πρέπει να έχει κάτι σαν ιδιότητες.

 

Επί του θέματος, νομίζω πως πρέπει:

 

>#define FIRST_CHAR 128

int main()
{
 char Achar[25];

for(i=0; i<24; i++)
 {
    Achar[i]=FIRST_CHAR+i;
  }
[color="Red"]Achar[25]=0;  [/color]
 printf("%s\n",Achar); 

return 0;
}

 

Γιατί αμέσως μετά το τυπώνεις ως sting άρα χρειάζεσαι τον null terminating character. Αν και νομίζω πιο σωστό είναι να τον βάλεις ως '/0'

 

Επίσης θα μπορούσες να γράψεις αντί για 128, 'Α' που θα ήταν και καλά πιο γενικό αλλά δεν ξέρω και πως θα το πάρει ο compiler.

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

Συνέχισα όπως είπαμε και θέλησα να το Ηλοποισω σε ενα Array το αποίο να κρατά την Αλφαβήτα (ελληνική)

 

Δηλαδή:

 

>
#define FIRST_CHAR 128

int main()
{
 char Achar[25]={32};

for(i=0; i<25; i++)
 {
    Achar[i]=FIRST_CHAR+i;
  }
 
 printf("%s\n",Achar);

ωστόσο η τηπωση μου βγάζει κατι Άσχετο ..!

 

ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩα

 

όπου στο "α" θα έπρεπε να τυπώνει Κενο Space_Char = 32

:fear:

 

τι λάθος κάνω ....:rolleyes:

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

ναι, φυσιολογικό

 

αν δεις το charset που χρησιμοποιει το DOS θα καταλαβεις, το 'α' ακολουθεί το 'Ω'

 

κοιτα να δεις στον compiler σου αν σου δίνει τη δυνατοτητα να κανεις compile με καποιο 'νορμαλ' charset, unicode ας πουμε ή το greek-κατι....

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

ναι .. αλλά εγώ δεν συνέχισα μετα το 'Ω'

 

Δηλαδί:

 

απο Array

 

Achar[0] = 128 /* Α */

Achar[24] = 151 /* Ω */

Αλλα Achar[25] = 32 /* Space */

 

εκτώς αν δεν κατάλαβα ακριβώς τΗ μου είπες :cry:

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

βασικα (δε ξερω πως γινετε και αν) πρεπει να αλλαξει το charset της κονσολας. Το ζητημα δεν ειναι οι τιμες που εχουν οι χαρακτηρες, αυτες δεν αλλαζουν. Σημασια εχει το πως τους απεικονίζουν τα εκαστοτε προγραμματα (πχ κονσολα ή notepad για αρχεια)

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
ναι .. αλλά εγώ δεν συνέχισα μετα το 'Ω'

 

Δηλαδί:

 

απο Array

 

Achar[0] = 128 /* Α */

Achar[24] = 151 /* Ω */

Αλλα Achar[25] = 32 /* Space */

 

εκτώς αν δεν κατάλαβα ακριβώς τΗ μου είπες :cry:

 

και βεβαια συνεχισες

 

το

> for(i=0; i<25; i++) 

σημαινει "κανε κατι 25 φορες"

αρα αλλαζεις ΟΛΑ τα στοιχεια του 25θεσιου array σου, σωστα?

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

Οπα γιατι το μινιμα πήγενε στο Προηγουμενο reply σου

 

 

Αλλάζω 24 θέσεισ και αφίνω την Τελευτεα (Achar[25]) να εχει την τιμη 32 Achar = 32 == ' '

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

α, και αυτο

Αλλα Achar[25] = 32 /* Space */

 

ΔΕΝ ισχυει. Αφου όρισεςτο array ως

 

>char Achar[25]={32};

 

μπορεις να ξέρεις μέχρι και το Achar[24] τι τιμή εχει. Το Achar[25] ειανι out of bounds και ειναι undefined ;)....

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

Έχεις δηλώσει πίνακα 25 θέσεων. Η αρίθμηση των θέσεων είναι από 0 έως 24. Στη θέση A[23] βρίσκεται ο κώδικας του Ω και στην τελευταία θέση A[24] το 128 + 24, δηλαδή ο κώδικας του α. Ο χαρακτήρας του Space από πού θα μπορούσε να προκύψει... ;

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

ώπα ναι Σωστα .. το παρέληψα αυτο ....

 

αλλα εστο και έτσι:

 

>

[color=#000000][color=#FF8000]#define FIRST_CHAR 128

[/color][color=#0000BB]int main[/color][color=#007700]()
{
 [/color][color=#0000BB]char Achar[/color][color=#007700][[/color][color=#0000BB]26[/color][color=#007700]][/color][color=#007700];

for([/color][color=#0000BB]i[/color][color=#007700]=[/color][color=#0000BB]0[/color][color=#007700]; [/color][color=#0000BB]i[/color][color=#007700]<[/color][color=#0000BB]25[/color][color=#007700]; [/color][color=#0000BB]i[/color][color=#007700]++)
 {
    [/color][color=#0000BB]Achar[/color][color=#007700][[/color][color=#0000BB]i[/color][color=#007700]]=[/color][color=#0000BB]FIRST_CHAR[/color][color=#007700]+[/color][color=#0000BB]i[/color][color=#007700];
  }
Achar[25]=32;  
 [/color][color=#0000BB]printf[/color][color=#007700]([/color][color=#DD0000]"%s\n"[/color][color=#007700],[/color][color=#0000BB]Achar[/color][color=#007700]);  [/color][/color]

 

Πάλι το ίδιο μου Γηνετε :cry:

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
×
×
  • Δημιουργία νέου...