C Char Array Vs String Karşılaştırmak
-
merhaba
akşam 19 da sınavım var çalışırken bi yerde sağlam takıldım
kodum aşağıdaki gibi
int main() { TC_BEGIN; int getLength(char str[]){ int i; for(i = 0;str[i] != '\0';i++); return i-1; } int strcompare(char alpha[], char bravo[]){ if(getLength(alpha) == getLength(bravo)){ //uzunluklar ayni int i; for(i = 0;i <= getLength(alpha);i++){ if(alpha[i] != bravo[i]){ return 0; } } return 1; }else{ //uzunluklar farkli.ayni olamazlar return 0; } return -1; } char c[500], h[500] = {'t','e','s','t','\0'}; gets(c); printf("%d",strcompare(c,h)); TC_END; return 0; }
amacım kullanıcının girdiği veriyi elimdeki kelimeyle karşılaştırmak. aynısımı ona bakmak. kullanıcının girdiği iki veriyi doğru biçimde karşılaştırıyorum. gets'le iki kere "test" alınca mesela aynı olduğunu anlayabiliyorum. ama kullanıcının girdiği kelimeyi elimdeki kelimeyle karşılaştırmam gerek. bunu nasıl yapabilirim ?
-
Karşılaştırma fonksiyonlarını senin yazman mı gerekli ?
-
Hocam mantığını söyleyeyim.
kllanıcıdan string ifadeyi al char diziye at
Sonra , dizinin uzunluğunu bul.
Dizinin uzunluğunu bulduktan sonra karşılaştırma yap bi döngü icerisinde
if(DiziOne[i]!=DiziTwo[i])
{
printf("KelimeEşit Değil");
break;
}
gerisi sana kaldı mobil olduğum için annca bu kadar :D
-
MhmdAlmz bunu yazdı
Hocam mantığını söyleyeyim.
kllanıcıdan string ifadeyi al char diziye at
Sonra , dizinin uzunluğunu bul.
Dizinin uzunluğunu bulduktan sonra karşılaştırma yap bi döngü icerisinde
if(DiziOne[i]!=DiziTwo[i])
{
printf("KelimeEşit Değil");
break;
}
gerisi sana kaldı mobil olduğum için annca bu kadar :D
@mehmetalmaz hocam ben verdigim kodda farkli birşeymi yaptım ?
@zeybekustası hocam genelde bizim yazmamızı istiyolar :/ o yüzden uğraşıyorum. string.h kullanamıyoruz
-
int karsilastir(const char *alpha, const char *bravo) { int sonuc = -1; for ( ; *alpha == *bravo; alpha++, bravo++) if (*alpha == '\0') return 0; return sonuc; }
eşitse 0 döner yoksa -1 döner. Az satırda işini çözmeye çalış. getlengh felan gerek yok.
Ekleme: Küçük bir hata yapmışım şimdi çalışıyor. Düzelttim.
DrKill tarafından 12/May/16 15:24 tarihinde düzenlenmiştir -
Hocam su an verdigin kod zaten o isi yapmiyor mu?
c yi kullanicidan almisin. h'nin icinde de "test" var. Karsilastiriyorsun. Calismiyor mu bu kod?
-
nurulmac11 bunu yazdıMhmdAlmz bunu yazdı
Hocam mantığını söyleyeyim.
kllanıcıdan string ifadeyi al char diziye at
Sonra , dizinin uzunluğunu bul.
Dizinin uzunluğunu bulduktan sonra karşılaştırma yap bi döngü icerisinde
if(DiziOne[i]!=DiziTwo[i])
{
printf("KelimeEşit Değil");
break;
}
gerisi sana kaldı mobil olduğum için annca bu kadar :D
@mehmetalmaz hocam ben verdigim kodda farkli birşeymi yaptım ?
@zeybekustası hocam genelde bizim yazmamızı istiyolar :/ o yüzden uğraşıyorum. string.h kullanamıyoruz
Hocam kodda bi sıkıntı yok ki ben göremedim istediğini tam anlamadım aslında . Ayrı bir yapı mı istiyorsun algoritmasının mı soruyorsun :/
-
NmC bunu yazdı
Hocam su an verdigin kod zaten o isi yapmiyor mu?
c yi kullanicidan almisin. h'nin icinde de "test" var. Karsilastiriyorsun. Calismiyor mu bu kod?
karsilastirinca 0 veriyo hocam :| 1 vermesini bekliyorum
sonuna \n \0 ekleyip de denedim sonuc ayni
drkill deniyorum hocam saolasin
-
şunun gibi olabilir: https://ideone.com/Zq6s1Y
-
YeniHarman bunu yazdı
şunun gibi olabilir: https://ideone.com/Zq6s1Y
yine yemedi ya, benim fonksiyonda kullanicinin girdigi iki stringi karsilastiriyo sorun yok
ama sorulardan biri 'kullanici "end of story" yazana kadar kullanıcıdan veri almak" tarzı bişey olacakmış. bu yüzden girilen şey "end of story" mi onu kontrol etmem lazım. onu yapamıyorum bi türlü
-
nurulmac11 bunu yazdıYeniHarman bunu yazdı
şunun gibi olabilir: https://ideone.com/Zq6s1Y
yine yemedi ya, benim fonksiyonda kullanicinin girdigi iki stringi karsilastiriyo sorun yok
ama sorulardan biri 'kullanici "end of story" yazana kadar kullanıcıdan veri almak" tarzı bişey olacakmış. bu yüzden girilen şey "end of story" mi onu kontrol etmem lazım. onu yapamıyorum bi türlü
Hım. Öncelikle scanf ile boşluklar alınamaz (normal kullanımla). Şöyle bir şey: https://ideone.com/04vFyr