2016-04-01 16 views
1

Bear char dizileri olarak iki tarih karşılaştıran doğru yönde bana gelin lütfen.bu benim ikinci stackoverflow soru Benim oğlanlara C

Ben tarihleri ​​çıktısını:

printf("%s - %s\n",tmpPtr->date, currentDate); 

Ve hep

if(tmpPtr->date != currentDate) {  // perhaps strcmp(), don't know 
    printf("Dates are not equal\n"); 
} 

idam olan bir if deyimi var Ama bunlar benim sonuçlar, çünkü bu doğru olamaz:

27/12/2015 - 27/12/2015 
Dates are not equal 
27/12/2015 - 27/12/2015 
Dates are not equal 
28/12/2015 - 27/12/2015 
Dates are not equal 
29/12/2015 - 28/12/2015 
Dates are not equal 
29/12/2015 - 29/12/2015 
Dates are not equal 
29/12/2015 - 29/12/2015 
Dates are not equal 
30/12/2015 - 29/12/2015 
Dates are not equal 
31/12/2015 - 30/12/2015 
Dates are not equal 
31/12/2015 - 31/12/2015 
Dates are not equal 

Bazı tarihler eşit olduğu için bu doğru olamaz ?

Dizeleri doğru olarak karşılaştırıyorum? Sadece bellek tahsisini mi yoksa sıralamadaki bir şeyi mi karşılaştırıyor? tarihleri ​​davayı gibi görünüyor aynı biçimde ise

if (strcmp(tmpPtr->date,currentDate) != 0) {  
    printf("Dates are not equal\n"); 
} 
+4

Hatta kendi kodunuzda * kendi yorumlarını okuyun *? Strcmp() 'nin belgelerine bir göz attınız mı? – EOF

+0

@EOF'un ne yazdığını eklemek için: Kendinizi zaten düşündüğünüz gibi strcmp'yi denediniz mi? Neden işe yaramadı? Neden denemedin? – Olaf

+0

Evet, belgeleri okudum. Bunu okuduğumda, <0 döndürdüğünde str1 değerinin str2 değerinden daha az olduğunu gösterir. Eğer Dönüş değeri> 0 ise, bu str2'nin str1'den küçük olduğunu gösterir. Eğer Dönüş değeri = 0 ise, bu str1'in str2'ye eşit olduğunu gösterir. Ben, @Olaf – Blarsssss

cevap

4

. Aksi takdirde bunları ayrıştırın ve bir dizenin yıl, ay ve tarihini, diğerinin ilgili alanlarına karşılaştırın.

+0

cevabında bahsettiğim dizenin uzunluğu ile ilgili bir varsayım yaptım, strcmp'in sadece harf sayısı olduğunu sanmıştım. – Blarsssss

+1

@Blarsssss Bu, strlen'dir. [Bu karakter ve dize işlev başvurusu] (http://en.cppreference.com/w/c/string/byte) yardımcı olabilir. –

+0

ahh tamam, teşekkürler kodumu düzeltildi. – Blarsssss

0

ardından strcmp kullanın: Böyle strcmp(), dizeleri karşılaştırmak kullanmak için