Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

String Dizi karsilastirma

Başlatan M_B, 27 Haziran 2011, 23:14:10

M_B

Merhabalar;

unsigned char Tarih[]={'2','6','/','0','6','/','2','0','1','1','\0'};
unsigned char BasTarih[]={'1','6','/','0','6','/','2','0','1','1','\0'};
unsigned char  BitTarih[]={'1','6','/','1','0','/','2','0','1','1','\0'};

x=strcmp(Tarih,BasTarih);
y=strcmp(Tarih,BitTarih);

yukardaki kodda
x in donus değeri 0 dan buyuk olarak donuyor. (dogru )
y nin donus değeri 0 dan buyuk olarak donuyor. Aslında 0 dan kucuk donmesi lazım. Neden buyuk donuyor anlamadım. Yalnız  BitTarih dizisindeki ay kısmını (10 olan kısmı) 06 yaparsam dedigim gibi geri donuş degeri 0 dan kucuk cıkıyor
Bu durum icin ne dersiniz.Bu karşılaştırmanın  farklı yontemleri varmı
Burda amac istenen tarihler arasında cihazın çalışması.


Teşekkürler

Yukardaki karşılaştırma yı saat olarak yaptığımda herhangi bir sorunla karşılaşmadım.

unsigned char Saat[]={'1','1',':','3','2','\0'};
unsigned char BasSaatDizi[]={'0','6',':','3','2','\0'};
unsigned char BitSaatDizi[]={'1','1',':','3','4','\0'};

x=strcmp(Saat,BasSaatDizi);
y=strcmp(Saat,BitSaatDizi);

İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

mufitsozen

Alıntı yapılan: M_B - 27 Haziran 2011, 23:14:10
Merhabalar;

unsigned char Tarih[]={'2','6','/','0','6','/','2','0','1','1','\0'};
unsigned char BasTarih[]={'1','6','/','0','6','/','2','0','1','1','\0'};
unsigned char  BitTarih[]={'1','6','/','1','0','/','2','0','1','1','\0'};

x=strcmp(Tarih,BasTarih);
y=strcmp(Tarih,BitTarih);

yukardaki kodda
x in donus değeri 0 dan buyuk olarak donuyor. (dogru )
y nin donus değeri 0 dan buyuk olarak donuyor. Aslında 0 dan kucuk donmesi lazım. Neden buyuk donuyor anlamadım. Yalnız  BitTarih dizisindeki ay kısmını (10 olan kısmı) 06 yaparsam dedigim gibi geri donuş degeri 0 dan kucuk cıkıyor
Bu durum icin ne dersiniz.Bu karşılaştırmanın  farklı yontemleri varmı
Burda amac istenen tarihler arasında cihazın çalışması.


Teşekkürler

Yukardaki karşılaştırma yı saat olarak yaptığımda herhangi bir sorunla karşılaşmadım.

unsigned char Saat[]={'1','1',':','3','2','\0'};
unsigned char BasSaatDizi[]={'0','6',':','3','2','\0'};
unsigned char BitSaatDizi[]={'1','1',':','3','4','\0'};

x=strcmp(Saat,BasSaatDizi);
y=strcmp(Saat,BitSaatDizi);


y icin strcmp dogru calisiyor, cunki karsilastirma islemi soldan saga her karakter icin yapiliyor, yani y icin 2>1 ve strcmp 1 ile geri donuyor! genel olarak tarihleri karsilastiracaksaniz yil/ay/gun diye girmeniz lazim.

Saat olarak veridignizdede ayni sekilde

  • 1=1
  • 1=1
  • :=:
  • 3=3
  • 2<4

ve strcmp <0 ile donuyor

Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

M_B

Alıntı yapılan: mufitsozen - 28 Haziran 2011, 12:46:22



[y icin strcmp dogru calisiyor, cunki karsilastirma islemi soldan saga her karakter icin yapiliyor, yani y icin 2>1 ve strcmp 1 ile geri donuyor! genel olarak tarihleri karsilastiracaksaniz yil/ay/gun diye girmeniz lazim.

Saat olarak veridignizdede ayni sekilde

  • 1=1
  • 1=1
  • :=:
  • 3=3
  • 2<4

ve strcmp <0 ile donuyor

Hocam Acıklamanız icin tesekkür ederim. Dediğiniz şekilde kullanmak aklıma gelmemişti.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet