C dilinde bu string işlemi nasıl yapılır ?

Başlatan magnetron, 17 Kasım 2015, 17:22:05

magnetron

merhaba forum,

şöyle bir karakter dizisi oluşturduk diyelim

char *gunler[7] = {"pazar", "pazartesi", "salı","çarşamba", "perşembe", "cuma", "cumartesi"}

buna bir fonksiyon içinde

strcat(gunler[1]," sabah")  yazarsam

gunler[1] ve gunler[2] vs.. ne olur ?

ben "pazartesi sabah" olmasını bekliyorum olur mu ?
bir de gunler[2] den itibaren diğer gunlerin üzerine yazılır mı ? yazılmaz mı ?

olmazsa bunu başka nasıl yapabilirim ?

teşekkür

mufitsozen

bu soruya verilecek yanit degisik derinlikte olabilir?

C dilini hobi amaclimi kullaniyorsunuz?
Universitede bir derste ogrenip profesyonel olarakmi kullanacaksiniz?
Gomulu sistemlerde C ile programlar yaziyorsunuz/yazacaksiniz?

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

magnetron

hocam cevap beklerken STM32 ile denedim

program saçmalıyor

olmuyor herhalde sonucuna vardım

( amacım STM32 de bir uygulama yapmak )

mufitsozen

#3
Alıntı yapılan: magnetron - 17 Kasım 2015, 18:50:43
hocam cevap beklerken STM32 ile denedim

program saçmalıyor

olmuyor herhalde sonucuna vardım

( amacım STM32 de bir uygulama yapmak )

Ben niye olmayacagini size hangi derinlikte yazayim diye sormustum.

Verdiginiz ornek kod icinde C dilinin isleyisini tam olarak kavrayamadiginizi gosteren en az 5 hatali ifade var.

Ama siz deneyerek olmayacagini zaten gormussunuz. Herhalde buda sizin icin yeterli olmus. Benim aciklamalarima gerek kalmamis.

Bence siz herhangi bir (baslangic seviyesi olsa daha dogru olur benim gorusume gore) C programlama kitabini alip onun "pointer" bahsini ve orneklerini tam olarak anlamaya calisiniz.

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

pea

Alıntı yapılan: magnetron - 17 Kasım 2015, 17:22:05
char *gunler[7] = {"pazar", "pazartesi", "salı","çarşamba", "perşembe", "cuma", "cumartesi"}

strcat(gunler[1]," sabah")  yazarsam

gunler[1] ve gunler[2] vs.. ne olur ?

gunler[1]'in gösterdiği char dizisi "pazartesi " olarak değişir ve artık string olmaktan çıkar. string = '/0' yani Null-Terminator ile biten char dizisi. Son karakter null olmazsa string sayılmaz, dolayısıyla string bazlı işlemlerin hiçbiri çalışmaz.

Alıntı Yapbir de gunler[2] den itibaren diğer gunlerin üzerine yazılır mı ? yazılmaz mı ?
Üzerine yazılır ama sizin beklediğiniz gibi yazılmaz.

mufitsozen'in dediği gibi siz pointer konusunu bir okuyun. Körü körüne deneme yapmayın. "The C Programming Language" -  Brian Kernighan, Dennis Ritchie (kısaca "K&R" kitabı olarak da geçer) okuyabilirsiniz.

ise

C ve Sistem Programcıları Derneği - C Ders Notları - Necati Ergin     abinin kitabı size çok güzel bir şekilde bu hatalarınızı açıklayacaktır.