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

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

Δημοσ.

Καλησπέρα.

Θέλω να κάνω κάτι στη C και θέλω να βλέπω αν ένας χαρακτήρας είναι αγγλικού ή ελληνικού αλφάβητου τονισμένος και μη, πεζός ή κεφαλαίος.

Αυτό δε δουλεύει.

(ch >= 'a' && ch <= 'z')
|| (ch >= 'A' && ch <= 'Z')
|| (ch >= 'α' && ch <= 'ω')
|| (ch >= 'Α' && ch <= 'Ω')
|| (ch >= 'ά' && ch <= 'ώ')
|| (ch >= 'Ά' && ch <= 'Ώ') 

Έχετε καμία πρόταση;

Δουλεύω σε Linux, συνεπώς utf-8

Δημοσ.

Το πρόβλημα είναι ότι το char στην C είναι πάντα 1 byte, στο οποίο δεν χωράνε όλοι οι utf8 χαρακτήρες. Μπορείς να χρησιμοποιήσεις κάποιο library για να χειριστείς τέτοιους χαρακτήρες.

Μπορείς να χρησιμοποιήσεις και wchar_t το οποίο νομίζω είναι 4 bytes σε linux/gcc.

  • Like 1
Δημοσ.

strcmp με το κατάλληλο locale, ή κάποιο library (ICU).

 

Επίσης, δε μπορείς να υποθέσεις πως τα γράμματα κάνουν compare σε αλφαβητική σειρά όπως τα έχεις εδώ. Και αν η είσοδος είναι από τρίτους τότε πρέπει να έχεις υπόψη ότι υπάρχουν πολλοί τρόποι να κάνεις encode πχ το Ά -- δες Unicode normalization forms (NFC, NFD). Η ICU έχει υποστήριξη για να κάνεις τα πάντα, το locale support της C runtime library δεν ξέρω.

  • Like 1
Δημοσ.

Τελικά απλοποιήθηκε το θέμα.

Φτιάχνω λεκτικό αναλυτή για μία mini έκδοση της python.

Διευκρινίστηκε πως παίζουμε μόνο με ascii οπότε όλα καλά.

Δημοσ.

Καλησπέρα 
Τελείως νεος στην C και για να μην φτιαξω αλλο θεμα αφου εχει λήξει αυτο το θεμα πιστευω δεν πειράζει , 
 

Θελω στην C με while να ΜΗΝ μπαίνει μεσα στο loop με τους αριθμους 1,2,3,4 και 9

 

Ο μόνος τρόπος για να μην μπει ειναι

while(x!=1 && x!=2 && x!=3 && x!=3 && x!=4 && x!=9)   ;

Η υπάρχει κάποιος αλλος τρόπος ποιο ωραίος ;

 γιατι με και και η δεν μου δουλεύει ! (εννοω το 1με 4 μαζι και το 9 διαφορετικα)
 

Δημοσ.

Καλησπέρα 

Τελείως νεος στην C και για να μην φτιαξω αλλο θεμα αφου εχει λήξει αυτο το θεμα πιστευω δεν πειράζει , 

 

Θελω στην C με while να ΜΗΝ μπαίνει μεσα στο loop με τους αριθμους 1,2,3,4 και 9

 

Ο μόνος τρόπος για να μην μπει ειναι

while(x!=1 && x!=2 && x!=3 && x!=3 && x!=4 && x!=9)   ;

Η υπάρχει κάποιος αλλος τρόπος ποιο ωραίος ;

 γιατι με και και η δεν μου δουλεύει ! (εννοω το 1με 4 μαζι και το 9 διαφορετικα)

 

κατι τετοιο ψάχνεις νομίζω:

 

while(!(x>0 && x < 5) && x != 9)

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

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

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

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

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

Σύνδεση

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

Συνδεθείτε τώρα
  • Δημιουργία νέου...