DonanımHaber Mini sürüm 2 Ocak 2026 tarihi itibariyle kullanımdan kalkacaktır. Bunun yerine daha hızlı bir deneyim için DH Android veya DH iOS uygulamalarını kullanabilirsiniz.
Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
6
Cevap
211
Tıklama
0
Öne Çıkarma
C'de takıldıgım bir nokta var yardım edin lütfen(sorun çözüldü)
A
20 yıl (231 mesaj)
Teğmen
Konu Sahibi

merhaba arkadaşlar problemi özetliyorum;
c de herhangiibir karakter dizisi tanımladım ama ben bu karakter dizisinde özel bir kelime girildiginde baska bir fonksiyon çalıştırmak istiyorum mesela printf("tebrikler..."); gibi.tanımladığım karakter dizisine eleman girme işlemini gets(a); ile yaptım(dizinin adı a dizisi) şimdi ben bunu if döngüsü ile yaptığım vakit algoritmayı şöyle geliştirdim.Örneğin attila girildiğinde if döngüsü çalışacak
....
gets(a);
if(gets(a)=="attila"){
.....
}
ama çalışmadı bu sefer de girilen her karakteri tek tek sorgulayım dedim şöyle bir algoritma yazdım
if(a[0]=='a'&&a[1]=='t'&&a[2]=='t'...)
ama bu da sonuç vermedi.
Burada tıkandım yardımcı olabilecek arkadaşların yardımını bekliyorum...

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil





< Bu mesaj bu kişi tarafından değiştirildi atilla_ati -- 4 Ekim 2005, 18:08:09 >

S
20 yıl (2290 mesaj)
Yüzbaşı

C de iki string'i karşılaştırırken "==" operatörünü kullanamazsınız. Bunun yerine strcmp() fonksiyonunu kullanmanız gerekir.

strcmp(string1, string2);
Bu fonksiyon 3 değer döndürür.
0 ise iki string birbirine eşit
0 dan küçükse string1 string2 den küçük
0 dan büyükse string1 string2 den büyük

strcmp() fonksiyonunu kullanmak için "string.h" include edin

Örnek program

#include <stdio.h>
#include <string.h>

int main ()
{
char szKey[] = "apple";
char szInput[80];
do {
printf ("Which is my favourite fruit? ");
gets (szInput);
} while (strcmp (szKey,szInput) != 0);
printf ("Correct answer!\n");
return 0;
}





< Bu mesaj bu kişi tarafından değiştirildi seyyah_seyyare -- 3 Ekim 2005, 21:16:30 >
Bu mesaja 1 cevap geldi.
N
20 yıl (674 mesaj)
Yüzbaşı

arkadaş çok iyi anlatmış
sadece bir şey ilave etmek istiyorum

quote:

0 ise iki string birbirine eşit
0 dan küçükse string1 string2 den küçük
0 dan büyükse string1 string2 den büyük


string1 string2 den küçük denilince, kafan karışa bilir, string küçük olurmu diye burdaki küçüklük ve büyüklük alfabedeki dizilişe göre yapılır
mesela

"apple" < "orange"
"book" > "bake"

biraz dikkat edersen ne demek istediğimi anlarsın


Bu mesaja 1 cevap geldi.
A
20 yıl (231 mesaj)
Teğmen
Konu Sahibi

arkadaşlar çok teşekkür ederim bayağı yararlı oldu newvatoo senin de aydınlatıcı bilgini unutmayacağım çok sağolun


Bu mesaja 1 cevap geldi.
A
20 yıl (231 mesaj)
Teğmen
Konu Sahibi

arkadaşlar bir sorum daha olacak
ben tanımlamış olduğumuz herhangibir dizdeki en büyük elemanı bulan basit bir program yazdım.daha önce int a[10]; olarak tanımladığımız bir diziye yine gets(a); ile değerler girdiğimde algoritmanın en büyük sayıyı çok saçma bir değer(6613) gösterdiğini gördüm bunun nedeni sanırım yerel değişkenlere ilk değer verme işleminde biliyorsunuz bellekte o anda hangi sayı varsa rastgele olarak o sayı atandığı için böyle bir sorun oldu dedim ama ben int a[10]={1,2,3,4,5,6,7,8,9,10};
gibi bir tanımlama yapınca program düzgün olarak çalışıyor?
sorunu özetleyecek olursam;gets(a); ile değer girdiğimde dizinin en büyük elemanı olarak çok saçma bir değer görüyorum(halbuki girdiğim en büyük değer 20) ama eğer
int a[10]={1,2,3,4,5,6,7,8,9,10};
şeklinde bir tanımlama yaparsam program sorunsuz çalışıyor
sizce bu fark neden olabilir?
yardımlarınız için şimdiden teşekkür ederim


Bu mesaja 1 cevap geldi.
S
20 yıl (2290 mesaj)
Yüzbaşı

gets() fonksiyonu char tipinde ekrandan bilgi alır. Normal diziyi int olarak tanımlamışsınız. Bence gets() fonksiyonu yerine eğer int değer alacaksanız scanf() fonksiyonunu kullanınız. Eğer string olarak okuyacaksanız gets() fonksiyonunu kullanın.


Bu mesaja 1 cevap geldi.
A
20 yıl (231 mesaj)
Teğmen
Konu Sahibi

quote:

Orjinalden alıntı: seyyah_seyyare

gets() fonksiyonu char tipinde ekrandan bilgi alır. Normal diziyi int olarak tanımlamışsınız. Bence gets() fonksiyonu yerine eğer int değer alacaksanız scanf() fonksiyonunu kullanınız. Eğer string olarak okuyacaksanız gets() fonksiyonunu kullanın.

teşekkür ederim



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.