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

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


B@GOS.GR

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

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

 

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

 

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

 

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

 

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

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Συνέχισα όπως είπαμε και θέλησα να το Ηλοποισω σε ενα 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:

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

 

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

 

>

[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++)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

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

  • Δημιουργία νέου...