C Kodumda bir hata

Gece_
18-12-2009, 20:21   |  #1  
OP Taze Üye
Teşekkür Sayısı: 0
9 mesaj
Kayıt Tarihi:Kayıt: Ara 2009

char* mystrchr(const char * from, char c)
{
        //unsigned uzunluk;
        while (*from != '\0')
        {
                if (c ==*from)
            return from;
         ++from;
        }
        if (c == '\0')
                return from;
        return NULL;
}
  
Hata
  
header.h: In function `char* mystrchr(const char*, char)':
header.h:51: error: invalid conversion from `const char*' to `char*'
header.h:55: error: invalid conversion from `const char*' to `char*'
  
  
bu fonksiyonun yeni bir string döndürmemesi gerekiyor. yani geçiçi birchar dizisi tanımlayıp onu döndürmemem gerekiyor, fakat türleruyuşmadığı içide hata alıyorum, dönmesi gereken tür char* ama dönendeğerin türü ise const char*, bu hatayı nasıl ortadan kaldırabilirim ?

Halil Şahin
18-12-2009, 20:57   |  #2  
Halil Şahin avatarı
Yıllanmış Üye
Teşekkür Sayısı: 0
715 mesaj
Kayıt Tarihi:Kayıt: Nis 2009

Bunlar ne ile ilgili anlamadım. Bi matematiksel işlem mi?

loseface
18-12-2009, 21:04   |  #3  
loseface avatarı
Yıllanmış Üye
Teşekkür Sayısı: 2
1,757 mesaj
Kayıt Tarihi:Kayıt: Ağu 2008

sayılarda şöyle bir durum geçerliydi tipler arasında
int a;
float b;
b=(float)a;

böyle deneyebilrsin ama float bir değişkeni inte dönüştüremezsin çünkü kapsamaz birbirini

panda34
18-12-2009, 21:26   |  #4  
Yıllanmış Üye
Teşekkür Sayısı: 0
2,344 mesaj
Kayıt Tarihi:Kayıt: Ara 2007

fonksiyonun döndürme türünüde const yapın, şu şekilde

const char* mystrchr(const char * from, char c)

Gece_
18-12-2009, 22:00   |  #5  
OP Taze Üye
Teşekkür Sayısı: 0
9 mesaj
Kayıt Tarihi:Kayıt: Ara 2009
Alıntı: panda34  
fonksiyonun döndürme türünüde const yapın, şu şekilde

const char* mystrchr(const char * from, char c)

hocamız fonksiyonun ve parametrelerin bu şekildeo lmasını istiyor, yoksa onu const yapmak çözer işi ;)

Gece_
18-12-2009, 22:02   |  #6  
OP Taze Üye
Teşekkür Sayısı: 0
9 mesaj
Kayıt Tarihi:Kayıt: Ara 2009
Alıntı: loseface  
sayılarda şöyle bir durum geçerliydi tipler arasında
int a;
float b;
b=(float)a;

böyle deneyebilrsin ama float bir değişkeni inte dönüştüremezsin çünkü kapsamaz

bu şekilde olmuyor

loseface
18-12-2009, 22:12   |  #7  
loseface avatarı
Yıllanmış Üye
Teşekkür Sayısı: 2
1,757 mesaj
Kayıt Tarihi:Kayıt: Ağu 2008
Alıntı: Gece_  
bu şekilde
bende C de o kadar iyi değilim onun için fazla yardımcı olamayacağım:/Sana kolay gelsin

Gece_
19-12-2009, 14:09   |  #8  
OP Taze Üye
Teşekkür Sayısı: 0
9 mesaj
Kayıt Tarihi:Kayıt: Ara 2009

Yardımcı olabilecek kimse yokmu tıkandım =)

_Neo_
19-12-2009, 14:12   |  #9  
_Neo_ avatarı
Yıllanmış Üye
Teşekkür Sayısı: 0
806 mesaj
Kayıt Tarihi:Kayıt: Haz 2007

Çok uzun zaman oldu bu pointerları unutalı bu cast işe yarayabilir;ancak programın işlevi nedir tek bir kod  parçacığı değil tümüne bakmalı.

[ Tüm kodu seç ] [ Yeni Pencerede Göster ]
char* mystrchr(const char * from, char c) {    //unsigned uzunluk; while (*from != '\0') { if (c ==*from) return (char*)from; ++from; } if (c == '\0') return (char*)from; return NULL; }

Son Düzenleme: _Neo_ ~ 19 Aralık 2009 14:15
Gece_
19-12-2009, 14:12   |  #10  
OP Taze Üye
Teşekkür Sayısı: 0
9 mesaj
Kayıt Tarihi:Kayıt: Ara 2009

sorun çözüldü (char*) from ile işlem tamamladı hata yok ;)

_Neo_
19-12-2009, 14:16   |  #11  
_Neo_ avatarı
Yıllanmış Üye
Teşekkür Sayısı: 0
806 mesaj
Kayıt Tarihi:Kayıt: Haz 2007

program çalıştı mı onemli olan derlenemsi değil çıkan exe'nin doğru çalışması orda  mantıksal hatada olabilir.

Gece_
19-12-2009, 14:21   |  #12  
OP Taze Üye
Teşekkür Sayısı: 0
9 mesaj
Kayıt Tarihi:Kayıt: Ara 2009

evet sorunsuz çalışıyor.