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

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

  • Απαντ. 100
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Δημοσ.

@migf1 Η άσκηση παραλλαγή στο codeblocks σου τρέχει κανονικά? Εμένα μου βγάζει ένα λάθος και μία προειδοποίηση.

 

Κάτι δεν επιτρέπεται στο loop, μήπως έχει να κάνει με τα ορίσματα?

Αυτή η άσκηση είναι C++?

 

Το λάθος στη γραμμή 19 είναι αυτό: D:\Turbo C exercises\Codeblocks C\months exercise floppy migf1\main.c|19|error: 'for' loop initial declarations are only allowed in C99 mode|

 

Η προειδοποίηση στη γραμμή 19 είναι αυτή: D:\Turbo C exercises\Codeblocks C\months exercise floppy migf1\main.c|19|warning: suggest parentheses around assignment used as truth value|

 

Στο παρακάτω πρόγραμμα το code blocks γιατί δεν αναγνωρίζει τους ελληνικούς χαρακτήρες?

Γενικά δεν το υποστηρίζει κάτι τέτοιο? Που σημαίνει όλα τα προγράμματα να τα γράφω καλύτερα στα αγγλικά?

Εσείς όταν φτιάχνετε τα προγράμματα, όταν θα πρέπει να εμφανίσουμε κάποια πράγματα στην οθόνη που ζητούν την αλληλεπίδραση του user τα γράφετε στα ελληνικά ή στα αγλλικά?

 

Ορίστε και ο κώδικας:

 

>#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main()
{
 char str[80];
 int i;

 printf("ƒι©« β¤ Ά­¨ £« ΅ζ: ");
 gets(str);
 for(i=(strlen(str)-1);i>=0;i--) printf("%c", str[i]); /* ’¦ -1 ε¤  §¨¦ ¨« ΅ζ. */
 getchar();
}

 

 

Το προγραμματάκι είναι ένα από τις ασκησούλες που κάναμε σχολή, όταν το αντέγραψα από floppy - και αυτό ήτανε δανεικό, δεν έχω δικό μου floppy - μου το έβγαλε έτσι όπως το βλέπετε με κάποιους περίεργους χαρακτήρες.

Ίσως να είναι και λόγω ασυμβατότητας compiler που δεν μπόρεσε να το διαβάσει σωστά, δεν ξέρω.

Εμφανίζει κανονικά "Δώσε ένα αλφαριθμητικό" όταν το τρέχουμε αλλά στον κώδικα όταν γράψουμε ελληνικά δεν τα αναγνωρίζει σωστά, γιατί?

Δημοσ.

Διάβολε, το ίδιο πρόβλημα έχω.

 

Κάποια παλιά μου προγράμματα σε turbo C++ δεν εμφανίζουν ελληνικά.

Δεν φαίνονται ούτε όταν τα ανοίγω (στο VS), ούτε όταν τα τρέχω.

 

Κατά σύμπτωση δημοσίευσα σήμερα ένα παλιό προγραμματάκι μου στο retromaniax και

κοίτα πώς τα βγάζει (post #15)

 

http://www.retromaniax.gr/vb/showthread.php?22391-Ρετρό-Σπαζοκεφαλιές&p=349631#post349631

 

Κάτι δεν πηγαίνει καλά με τον τρόπο που είναι σωσμένος ο κώδικας από τον compiler της turbo C++.

 

-

Δημοσ.

@migf1 Η άσκηση παραλλαγή στο codeblocks σου τρέχει κανονικά? Εμένα μου βγάζει ένα λάθος και μία προειδοποίηση.

 

Κάτι δεν επιτρέπεται στο loop, μήπως έχει να κάνει με τα ορίσματα?

Αυτή η άσκηση είναι C++?

 

Το λάθος στη γραμμή 19 είναι αυτό: D:\Turbo C exercises\Codeblocks C\months exercise floppy migf1\main.c|19|error: 'for' loop initial declarations are only allowed in C99 mode|

 

Η προειδοποίηση στη γραμμή 19 είναι αυτή: D:\Turbo C exercises\Codeblocks C\months exercise floppy migf1\main.c|19|warning: suggest parentheses around assignment used as truth value|

 

>
char *s_toupper( char *s )
{
       if ( !s )
               return NULL;

[b]        for (char *cp=s;  *cp = toupper((int)(*cp)); cp++ )[/b]
               ;

       return s;
}

 

Υποθέτω ότι εννοείς αυτό. Το "λάθος" είναι αυτό που σου λέει. Το πρότυπο C99 επιτρέπει αυτό τον τρόπο σύνταξης δηλαδή να ορίσεις μια μεταβλητή στο 1ο όρισμα της for. Πριν την C99 έπρεπε να το έχεις ως:

>
char *cp;
....
....
for (cp = s; κτλ)

 

Στο παρακάτω πρόγραμμα το code blocks γιατί δεν αναγνωρίζει τους ελληνικούς χαρακτήρες?

Γενικά δεν το υποστηρίζει κάτι τέτοιο? Που σημαίνει όλα τα προγράμματα να τα γράφω καλύτερα στα αγγλικά?

Εσείς όταν φτιάχνετε τα προγράμματα, όταν θα πρέπει να εμφανίσουμε κάποια πράγματα στην οθόνη που ζητούν την αλληλεπίδραση του user τα γράφετε στα ελληνικά ή στα αγλλικά?

 

Ορίστε και ο κώδικας:

 

>#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main()
{
 char str[80];
 int i;

 printf("ƒι©« β¤ Ά­¨ £« ΅ζ: ");
 gets(str);
 for(i=(strlen(str)-1);i>=0;i--) printf("%c", str[i]); /* ’¦ -1 ε¤  §¨¦ ¨« ΅ζ. */
 getchar();
}

 

Το προγραμματάκι είναι ένα από τις ασκησούλες που κάναμε σχολή, όταν το αντέγραψα από floppy - και αυτό ήτανε δανεικό, δεν έχω δικό μου floppy - μου το έβγαλε έτσι όπως το βλέπετε με κάποιους περίεργους χαρακτήρες.

Ίσως να είναι και λόγω ασυμβατότητας compiler που δεν μπόρεσε να το διαβάσει σωστά, δεν ξέρω.

Εμφανίζει κανονικά "Δώσε ένα αλφαριθμητικό" όταν το τρέχουμε αλλά στον κώδικα όταν γράψουμε ελληνικά δεν τα αναγνωρίζει σωστά, γιατί?

 

Οι ασκησούλες που κάνατε στη σχολή και έσωσες σε floppy ήταν σε turbo c επί εποχής dos ?

 

[Μπακάλικη Εξήγηση]

Οι "ελληνικοί χαρακτήρες" είναι λίγο ιστορία λόγω πολλαπλών διαφορετικών προτύπων. Στο DOS η Ελληνική υποστήριξη χρησιμοποιούσε την λεγόμενη κωδικοσελίδα 737 (CP737) (ή και την 869 πιο σπάνια). Μετά έχουμε το πρότυπο ΕΛΟΤ928 (πιο γνωστό ως ISO8859-7) και το παραπλήσιο πρότυπο Windows-1253 που χρησιμοποιούν τα Windows. Επίσης έχουμε και τις διάφορες κωδικοποιήσεις του Unicode (πχ UTF-8) οι οποίες υποστηρίζουν ταυτόχρονα εκτός από Ελληνικά και ένα κάρο άλλες διαλέκτους.

 

Επί εποχής DOS, υπήρχαν κάποια προγραμματάκια που "άλλαζαν" το πληκτρολόγιο σε Ελληνικά. Έτσι έγραφες στο πρόγραμμά σου Ελληνικά CP737 και όταν το έτρεχες τα έδειχνε κανονικά. Αυτό γινόταν γιατί "έγραφες" CP737 και το DOS ήταν ρυθμισμένο να δείχνει CP737. Τώρα όμως που δεν χρησιμοποιείται πια αυτή η κωδικοσελίδα, οι συγκεκριμένοι χαρακτήρες έπαψαν να αντιστοιχούν σε Ελληνικά.

 

Για να παίξουν τα Ελληνικά (αφού μετατρέψεις τους χαρακτήρες σε ISO8859-7 ή UTF-X αν δεν είναι ήδη), υπάρχουν διαφορετικές μέθοδοι ανάλογα τι λειτουργικό χρησιμοποιείς. Ο migf1 είχε γράψει ένα νήμα πριν λίγο καιρό με ένα πρόγραμμα που σε διευκολύνει στην εμφάνιση Ελληνικών στα Windows ή κάτι τέτοιο. Θα σου εξηγήσει καλύτερα εκείνος τι να κάνεις σε Windows και φυσικά διάβασε και το νήμα που ανέφερα.

Δημοσ.
[..]

Στο παρακάτω πρόγραμμα το code blocks γιατί δεν αναγνωρίζει τους ελληνικούς χαρακτήρες?

Γενικά δεν το υποστηρίζει κάτι τέτοιο? Που σημαίνει όλα τα προγράμματα να τα γράφω καλύτερα στα αγγλικά?

Εσείς όταν φτιάχνετε τα προγράμματα, όταν θα πρέπει να εμφανίσουμε κάποια πράγματα στην οθόνη που ζητούν την αλληλεπίδραση του user τα γράφετε στα ελληνικά ή στα αγλλικά?

 

Ορίστε και ο κώδικας:

 

>#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main()
{
 char str[80];
 int i;

 printf("ƒι©« β¤ Ά­¨ £« ΅ζ: ");
 gets(str);
 for(i=(strlen(str)-1);i>=0;i--) printf("%c", str[i]); /* ’¦ -1 ε¤  §¨¦ ¨« ΅ζ. */
 getchar();
}

 

 

Το προγραμματάκι είναι ένα από τις ασκησούλες που κάναμε σχολή, όταν το αντέγραψα από floppy - και αυτό ήτανε δανεικό, δεν έχω δικό μου floppy - μου το έβγαλε έτσι όπως το βλέπετε με κάποιους περίεργους χαρακτήρες.

Ίσως να είναι και λόγω ασυμβατότητας compiler που δεν μπόρεσε να το διαβάσει σωστά, δεν ξέρω.

Εμφανίζει κανονικά "Δώσε ένα αλφαριθμητικό" όταν το τρέχουμε αλλά στον κώδικα όταν γράψουμε ελληνικά δεν τα αναγνωρίζει σωστά, γιατί?

 

Ισχύει ότι σου εξήγησε ο imitheos, θα χρειαστείς έναν μετατροπέα από 737 σε 1253 ή Unicode.

 

Θα μπορούσες να το μετατρέψεις γρήγορα σε συμβατή με τα Windows μορφή ακόμα και μέσο του Word, ανοίγοντας το .C αρχείο ως : Άλλη κωδικοποίηση, Ελληνικά (DOS):

 

 

post-41640-0-60191400-1332777609_thumb.png

 

 

Δημοσ.

Για τα Ελληνικά, το πιο εύκολο είναι αυτό που σου πρότεινε ο DirectX. Είτε με το Word, είτε με κάποιον άλλο editor/IDE υποστηρίζει OEM γραμματοσειρές (και συγκεκριμένα την ΟΕΜ 737/437 όπως σου εξήγησε ο imitheos.

 

Από περιέργεια, γράψε στη γραμμή εντολών...

>chcp

Αν σου απαντήσει: 737 ή 437, δοκίμασε να κάνεις το αρχείο σου...

>cat myfile.c

και λογικά θα σου το δείξει σε Ελληνικά αντί για ... κινέζικα (μπορείς να την ορίσεις και μόνος σου την κωδικοσείδα, π.χ. chcp 437 ή chcp 737, αλλά μετά να την ξαναγυρίσεις σε ότι ήταν πριν)

 

Αυτές όμως οι κωδικοσελίδες δεν χρησιμοποιούνται πλέον, οπότε το καλύτερο είναι να μετατρέψεις τα αρχεία σου είτε σε ANSI (Windows 1253) είτε σε UTF-8, όπως είπαν και τα παιδιά πριν.

 

Σχετικά με την άσκηση, ενεργοποίησε στον gcc (code::blocks) την αναθεώρηση C99, με το switch...

>-std=c99

Δημοσ.

Ουάου πολύ γρήγορη απόκριση, μπράβο ρε αλάνια.

 

@imitheos Ο κώδικας έχει γραφεί με διαφορετική codepage για τα ελληνικά (μιλάμε για εποχές dos και turbo C), ακριβώς όπως τα λες.

 

btw πολύ ωραία ιστορία σχετικά με τις κωδικοσελίδες, έμαθα πολλά πράγματα

 

Είδα το retromaniax.gr και έπεσα στο pixel περιοδικό, φοβερές εποχές. Είχα 200 τεύχη και βάλε και τα έδωσα όλα, κουταμάρα μου......

 

Ήμουν πολύ φανατικός του pixel, μεγάλη αγάπη από τα παλιά.

 

Ευτυχώς κατέβασα τα τεύχη από το παραπάνω site και τώρα είμαι πολύ ευτυχισμένος :)

 

Στο θέμα μας όμως:

 

@migf1 έγραψα chcp στην γραμμή εντολών cmd και μου έδειξε στην οθόνη:

 

Ενεργός κωδικοσελίδα 737, το γύρισα σε 437 αλλά δεν έφτιαξε. :mad:

 

Να το κάνω δεξί κλικ--> επεξεργασία ώστε να δω τι γράφει? Να το ανοίξω με world πως?

 

Τέσπα καλύτερα να γράφω όλο αγγλικά, γιατί από computer σε computer κατά τη μεταφορά ασκήσεων ενδεχομένως να έχω πρόβλημα κάποια στιγμή.

 

Τι ωραίες εποχές το dos, είχε πάρα πολλά αρνητικά αλλά... δεν πρέπει να ξεχνάμε και τα θετικά και την απλότητά του, έτσι? :wub:

 

@migf1 αναθεώρηση switch? Για να το πληκτρολογήσω αυτό "-std=c99" στην αρχή του προγράμματος εννοείς? Ή μέσω μενού υπάρχει το σχετικό κουμπί?

 

Δεν το έχω κοιτάξει ακόμα...

Δημοσ.

Η Pelles-C είναι από "μαμά" γυρισμένη σε C99, τον gcc πρέπει να τον γυρίσεις εσύ. Δεν το έχω installed εγώ το Code::Blocks,. γιατί δουλεύω από γραμμή εντολών. + Notepad++... κάπου στις ρυθμίσεις του project αν θυμάμαι καλά, έχει πάαααρα πολλές επιλογές για την παραμετροποίηση του compiler... εκεί μέσα δες.

Δημοσ.

thanks, θα το τσεκάρω με την ησυχία μου.

 

Εσένα σε εξυπηρετεί καλύτερα msdos? Το notepad++ είναι text editor μόνο ή και compiler μαζί?

 

Έχει κάποια πλεονεκτήματα αυτός ο συνδυασμός?

 

Προσπαθώ εδώ και αρκετή ώρα να δω τι κάνω λάθος στο παρακάτω πρόγραμμα και δεν μπορώ να το βρω με τίποτα, εμένα μου φαίνεται ολόσωστο γραμμή προς γραμμή, κοντεύω να τρελαθώ, τι φταίει ρε παιδιά? :cry: :(

 

>#include <stdio.h>
#include <stdlib.h>
/*#include <conio.h>*/
#include <string.h>

int main()
{
   int *int_arr,num,x;
   scanf("%d",&num);
   for(x=0; x<=num-1;x++)
   {
   printf("%d\n",-x);
   int_arr[x]=-x;
   }
   printf("%d",min_thesi(int_arr,num));
   getchar();
   return 0;
}

min_thesi(int *a,int n)
{
int i,min,thesi;
min=a[0];
thesi=0;
for(i=0;i<n-1;i++)
{
  if(a[i]<min)
  {
     min=a[i];
     thesi=i;
  }
}
return thesi;
}

 

Δεν βγάζει λάθη ή warnings απλά δεν τρέχει (codeblocks).

Δημοσ.

...

Εσένα σε εξυπηρετεί καλύτερα msdos? Το notepad++ είναι text editor μόνο ή και compiler μαζί?

Text editor, αλλά με 3-4 plugins το έχω κάνει να συμπεριφέρεται σαν ide (και με κάτι custom σκριπτάκια που στην ουσία είναι εντολές της γραμμής των εντολών κάνω compile & run μέσα από το notepad++)

 

Έχει κάποια πλεονεκτήματα αυτός ο συνδυασμός?

Για την δική μου ιδιοσυγκρασία ναι: α) χρησιμοποιώ μόνο ότι χρειάζομαι, τίποτε λιγότερο και τίποτα περισσότερο, β) μένει σταθερό σε όποια γλώσσα κι αν προγραμματίζω γ) μαθαίνω αναγκαστικά το βασικό tool-chain των γλωσσών με τις οποίες καταπιάνομαι.

 

Προσπαθώ εδώ και αρκετή ώρα να δω τι κάνω λάθος στο παρακάτω πρόγραμμα και δεν μπορώ να το βρω με τίποτα, εμένα μου φαίνεται ολόσωστο γραμμή προς γραμμή, κοντεύω να τρελαθώ, τι φταίει ρε παιδιά? :cry: :(

...

Δεν βγάζει λάθη ή warnings απλά δεν τρέχει (codeblocks).

Χρησιμοποιείς έναν (υποτίθεται) πίνακα int_arr χωρίς να τον έχεις δημιουργήσει, ούτε στατικά ούτε δυναμικά.

 

ΥΓ. Έχεις τρομερά κενά στη C, σου προτείνω ανεπιφύλακτα να ξεκινήσεις να διαβάζεις το "C Programming, a Modern Approach (2nd edition)" του King.

Δημοσ.

Κάποια παλιά μου προγράμματα σε turbo C++ δεν εμφανίζουν ελληνικά.

Κάτι δεν πηγαίνει καλά με τον τρόπο που είναι σωσμένος ο κώδικας από τον compiler της turbo C++.

 

Εκτος από τον τρόπο που περιγραφει ο DirectX εγώ έχω καταφύγει στον παρακάτω τρόπο που με βόλεψε πολύ όταν χρειάστηκε να πάρω πολλά δεδομένα (Στα ελληνικά) από ένα παλιό πρόγραμμα σε DOS.

 

Χρησιμοποίησα λοιπόν το Notepad++ (γενικά το συστήνω μιας και σου επιτρέπει με ένα κλικ να αλλάξεις η να μετατρέψεις) encoding.

 

 

Η διαδικασία είναι η εξής.

 

Ανοίγω το αρχείο με notepad++.

 

Από τα menu επιλέγω

 

Encoding -> Character sets -> Greek -> OEM 737

 

αφού το επιλέξω μου εμφανίζει σωστά τα ελληνικά (που σημαίνει ότι αυτό είναι το encoding με το οποιο είχε γραφτεί το αρχείο). Έχει και αλλα encoding στην περίπτωση που δεν κάνει αυτό.

 

Έπειτα πάω πάλι στο ίδιο menu

 

Encoding -> Convert το UTF-8

κάνω Save.

και μετά πάλι

Encoding -> Convert το ANSI

και ξανά Save και τελειωσα.

 

Ο λόγος που το κάνω πρώτα UTF8 είναι γιατί κάποιες φορες δεν μου έκανε την μετατροπή σε ANSI (windows-1253) κατευθείαν. Ενώ πρώτα UTF8 και μετά ANSI έπαιξε πάντα.

Δημοσ.

Από περιέργεια, γράψε στη γραμμή εντολών...

>chcp

Αν σου απαντήσει: 737 ή 437, δοκίμασε να κάνεις το αρχείο σου...

>cat myfile.c

και λογικά θα σου το δείξει σε Ελληνικά αντί για ... κινέζικα (μπορείς να την ορίσεις και μόνος σου την κωδικοσείδα, π.χ. chcp 437 ή chcp 737, αλλά μετά να την ξαναγυρίσεις σε ότι ήταν πριν)

 

Μήπως εννοείς "type" εδώ ? Σημειοτέον έχω χρόνια να δουλέψω windows οπότε αν υπάρχει εντολή cat αγνόηστε με :)

 

Ενεργός κωδικοσελίδα 737, το γύρισα σε 437 αλλά δεν έφτιαξε. :mad:

 

Η 437 εννοείται πως δεν θα φτιάξει το θέμα μια και δεν έχει Ελληνικά. Η 437 υλοποιούσε το ASCII με κάποιες προσθήκες και η 737 ουσιαστικά είναι η 437 + Ελληνικά.

 

 

>#include <stdio.h>
#include <stdlib.h>
/*#include <conio.h>*/
#include <string.h>

int main()
{
   int *int_arr,num,x;
   scanf("%d",&num);
   for(x=0; x<=num-1;x++)
   {
   printf("%d\n",-x);
   int_arr[x]=-x;
   }
   printf("%d",min_thesi(int_arr,num));
   getchar();
   return 0;
}

min_thesi(int *a,int n)
{
int i,min,thesi;
min=a[0];
thesi=0;
for(i=0;i<n-1;i++)
{
  if(a[i]<min)
  {
     min=a[i];
     thesi=i;
  }
}
return thesi;
}

 

Δεν βγάζει λάθη ή warnings απλά δεν τρέχει (codeblocks).

 

Αν δεν βγάζει λάθη ή warnings, άλλαξε το IDE σου :Ρ γιατί θα έπρεπε να βγάζει.

1)

>
<stdin>: At top level:
<stdin>:20:1: προειδοποίηση: return type defaults to ‘int’ [-Wreturn-type]

Μην δηλώνεις συναρτήσεις ως "όνομα(παράμετροι)" αλλά να βάζεις πάντα και τον τύπο επιστροφής ή void αν δεν θέλεις να επιστρέφει κάτι. Παλαιότερα όταν δεν δήλωνες τύπο επιστροφής, αυτός ισοδυναμούσε με int όπως λέει και το μήνυμα της προειδοποίησης. Η C99 το σταμάτησε αυτό ως κακή πρακτική.

 

2)

>
<stdin>: In function ‘main’:
<stdin>:13:12: προειδοποίηση: ‘int_arr’ may be used uninitialized in this function [-Wuninitialized]

Δέσμευσες την απαραίτητη μνήμη για τον δείκτη πριν τον χρησιμοποιήσεις ?

 

3)

>
<stdin>:15:5: προειδοποίηση: implicit declaration of function ‘min_thesi’ [-Wimplicit-function-declaration]

Η main δεν ξέρει ποια είναι η συνάρτηση min_thesi που καλείς. Σε γλώσσες όπως η pascal συνηθίζετο να γράφουμε τις συναρτήσεις πριν την "main" και αυτό μπορείς να κάνεις και εδώ αν θέλεις. Ο δόκιμος τρόπος όμως σε C είναι να χρησιμοποιείς τα λεγόμενα prototypes δηλαδή πριν την main να υπάρχει μια δήλωση της συνάρτησης πχ:

 

>
int min_thesi(int *a,int n);

(πρόσεξε το ερωτηματικό) και η συνάρτηση να γράφεται μετά την main όπως την έχεις γράψει.

 

 

Με λίγα λόγια: Ξέχασε όσα θυμάσαι από την TurboC και κάψε ανακύκλωσε ό,τι βιβλία έχεις για αυτήν. Μετά πάρε ένα καλό βιβλίο και διάβασε.

  • 2 χρόνια αργότερα...
Δημοσ.

Χαίρεται παιδιά, 

Έχω ακριβώς το ίδιο πρόβλημα με το code blocks.Έχω φτιάξει ένα πρόγραμματάκι,  στην ουσία, έναν μεταφραστή από τα ελληνικά στα αγγλικά.Δέχεται μια λέξη στα ελληνικά ή αγγλικά και την μεταφράζει. Το πρόγραμμα, συνδέεται με ένα αρχείο που περιέχει μια ελληνική και μια αντίστοιχη αγγλική.

Το πρόβλημα είναι ότι όχι μόνο δεν μπορώ να εμφανίσω από το αρχείο ελληνικές λέξεις αλλά δεν μπορώ να εισάγω κιόλας.

Επίσης είδα τις λύσεις που προτείνετε παραπάνω αλλά δεν κατάλαβα πως ακριβώς θα τα υλοποιήσω.

Τρέχω την έκδοση 13.12 του code blocks, σε win 8.1(laptop) και win 7(desktop) και τα δύο 64bit.

Ακόμη έχω Έχω προσθέσει (σύμφωνα με τις οδηγίες του καθηγητή μου) τις εντολές : 

-finput-charset=cp1253
-fexec-charset=cp869
στο : Codeblocks>Settings>Compiler>Compiler Settings , στην καρτέλα Other options.
αλλά και πάλι μου εμφανίζει "κινέζικα".
Και κάτι τελευταίο, στο cmd αν τρέξω chcp μου εμφανίζει 737.
 
 
 
Υ.Γ. :Η εργασία πρόκειται να σταλεί σε άλλο pc( του καθηγητή) επομένως θα πρέπει να δουλεύει και σε εκείνο.
Δημοσ.

Εφόσον σε command-line το chcp σου δίνει 737, δοκίμασε να αλλάξεις το -fexec-charset=cp869 σε =cp737. Λογικά θα σου δουλέψει (αν όχι, βεβαιώσου πως το Code::Blocks όντως σώζει τα πηγαία αρχεία σε Windows-1253 (aka cp1253) και όχι ας πούμε σε UTF, διότι υπάρχει περίπτωση το iconv να μην μπορεί να μετατρέψει από utf σε cp737).

 

Πάντως χλωμό να δουλεύει και σε σένα και στον καθηγητή, γιατί οι κωδικοσελίδες 737 και 869 κάνουν map σε διαφορετικές θέσεις τους ελληνικούς χαρακτήρες (δες στα links τους πίνακες από το 128ο byte και μετά).

Δημοσ.

Κατάλαβα τι συμβαίνει, σε ευχαριστώ. 

Πάντως το έχω δοκιμάσει να βάλω 737 αντί για 869. Για την ακρίβεια στην αρχή ήταν 747 εγώ το άλλαξα;)

 

Τότε,  όπως λες θα είναι θέματακι του code blocks, γιατί όταν έπαιζα λίγο με τις ρυθμίσεις μου,  έβγαλε compile error και έλεγε κάτι για invalid... iconv...

Άρα θα ελέγξω αυτό που είπες, να ψάξω στις ρυθμίσεις του compiler?

 

Μήπως το να αλλάξω compiler θα διορθώσει το πρόβλημα?

 

Όταν λές πως κάνει map σε διαφορετικές θέσεις του ελληνικούς χαρακτήρες, αναφέρεσαι από υπολογιστή σε υπολογιστή? Διότι, θεωρητικά αν δουλεύει σε εμένα θα δουλεύει και στον καθηγητή εφόσον έχω κάνει τις ίδιες ρυθμίσεις στα pc μας και το codeblocks(άρα και ίδιες κωδικοσελίδες), λέω εγώ τώρα :P

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

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