Tam Sürümünü Görmek İçin : Türkçe karakterleri karşılaştırmak
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
char yerine wchar_t kullabilirsin. ( <wchar.h> )
ama eşittir dışında işe yaramıyor.
kendi sıralama fonksiyonunu yazman lazım.
başka bir kütüphane kullanmamam lazım =(
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, 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
teşekkürler, sanırım wchar_t dışında bir çözüm yok =)
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
ascii kodları ile karşılaştırmayı da daha önce denedim....
belki başka derleyicilerde çalışıyordur fakat gcc'de olmuyor...
@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.
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.