PDA

Tam Sürümünü Görmek İçin : Türkçe karakterleri karşılaştırmak


abcy
14/12/2006, 20:30
merhaba,

yazdığım bir fonksiyonda Türkçe karakterleri karşılaştırırken sorun yaşıyorum,

if( *s == 'ı' )

dediğimde gcc
warning: comparison is always false due to limited range of data type
şeklinde bir uyarı veriyor

if( *s == 'i' )
ı'yı i yaparsam işler sorunsuz çalışıyor.

Türkçe karakterlerde de karşılaştırma yapabilmek için ne yapmam gerekir;

teşekkürler


mr1yh1
14/12/2006, 20:55
char yerine wchar_t kullabilirsin. ( <wchar.h> )
ama eşittir dışında işe yaramıyor.
kendi sıralama fonksiyonunu yazman lazım.

abcy
14/12/2006, 20:59
başka bir kütüphane kullanmamam lazım =(

mr1yh1
14/12/2006, 21:07
http://en.wikipedia.org/wiki/C_standard_library
wchar 1995 den bu yana C standart kütüphanesi içinde imiş.

ayrıca başka şekilde yapabileceğini sanmıyorum.
C ile bu işler işkence zaten.

acehreli
14/12/2006, 22:01
abcy, s'yi 'unsigned char' yapmayi dene.

Ali

abcy
14/12/2006, 22:36
abcy, s'yi 'unsigned char' yapmayi dene.

Ali

sonuç yine aynı... :(

acehreli
15/12/2006, 02:34
Himmm. O zaman daha onceki wchar_t onerileri gecerli. Kaynak kodun icine o harfi yazinca derleyici demek ki 'unsigned char'dan daha buyuk bir deger goruyor...

Ali

abcy
15/12/2006, 10:28
teşekkürler, sanırım wchar_t dışında bir çözüm yok =)

Revne
15/12/2006, 10:56
Bence klavyeden türkçe harflerin ascii karşılıklarını bul onları uygula...
mesela ş=120,ı=150,İ=200 olsun.. Bunları ufak bir scanf/printf coduyla ogrenebilirsin..

#define TR_S=120
#define TR_I =150
........................
if(*p==TR_S)
{
//işlem tamam
}

kolay gelsin

abcy
15/12/2006, 11:39
ascii kodları ile karşılaştırmayı da daha önce denedim....
belki başka derleyicilerde çalışıyordur fakat gcc'de olmuyor...

mr1yh1
15/12/2006, 13:09
@Revne
ascii karşılıkları bulunabilse, ilk çözümünde işe yaraması lazım.

birinci soru, kaynak kodu dosyası neye göre kodlanmış (encoding )..
gcc ye giden text dosyası iso-8859-9 yani türkçe olsa ne olur
bilemiyorum,
( eclipse de bu seçenek yok deneyemiyorum )
o zaman ascii karşılığının olması ve char ın kullanılabilmesi lazım.

diğer durumda utf-8 yani 2 bayt, char bunu doğru tutamıyor.