Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
4
Cevap
881
Tıklama
0
Öne Çıkarma
C++ ta char a char atama
M
9 yıl
Teğmen
Konu Sahibi

arkadaşlar bu konuda sürekli takılıyorum. char tipli bir değişkene yine char bir değişken atayınca hata veriyor bazen tanımlamayı değiştirince (örn: char str; veya char str[] veya char *str veya char *str[] ) düzeldiği de oluyor ama ben bunun mantığını anlamadım. eğer tanımlama şeklini değiştirirsem de str fonksiyonlarında hata veriyor. strcat(str,str2) yaparken hata veriyor. kısacası char-string kullanımında kafam karıştı, yabancı kaynaklara bakınca daha çok karışıyor. bi yardımcı olsanız



F
9 yıl
Yüzbaşı

1-char -> tek char
2-char[] -> char dizisi
3-char* -> char pointer
4-char* [] -> char pointer dizisi

2 ve 3 birbiri yerine kullanılabilir, diğerleri başka.



S
9 yıl
Yüzbaşı

Ornek atarsaniz takildiginiz yeri anlatabilirim. Char* C style diye biliyorum. Soyle bir mantigi var. Bellekte char[200] yer ayirirsiniz. İcine "serhat" atadiniz. Sonuna null char ekler. 200char ayirdiginiz yeri bu sekilde 6 karakter icin kullanmis olursunuz. 200 den buyuk atarsaniz hata verir yada baska memory bolgesine yazmis olursunuz. Ekrana yazarken kendi otomatik null char gorene kadar yazar. C++ ta string tipi gelmistir. Esasen char* dir. Yani char arrayi. Yukarida anlattigim fixed lenght muhabbetine gerek kalmadan kendi yonetir. Direk aklimdan yazdigim icin hatalar olabilir ama genel kavramaniz gereken mantik budur.



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
M
9 yıl
Teğmen
Konu Sahibi

teşekkür ederim ancak son cevapta kafam biraz karıştı :D


Bu mesaja 1 cevap geldi.
Y
9 yıl
Teğmen

Strcat ile ilgili sorununu şu şekilde anlatayım.


char* nick="yokedici" ;


Üstte nick adlı char pointer string literal olarak adlandırılır. Bu türdeki bir değişken modifiye edilemez. Çünkü sen bu değişkene yer alırken yokedici kelimesine yetecek kadar yer aldın. Strcat ise boyutu büyütebilecek bir şey olduğundan dolayı bu türde bir değişken strcat için uygun değil.


char nick[10] = "yokedici"


Strcat kullanmak istiyorsan char array olarak tanımladığın bir değişkenle gitmen gerekiyor. Yani allocate edilmiş bir değişkene ihtiyacın var. Fakat nick değişkeni 10 karakterlik yer içeriyor. "yokedici" kelimesinin üstüne 10 karakteri geçecek kadar karakter basarsan yine başın belaya girer.

Kısaca boyutu aşmamak önemli ve bu yüzden ilk verdiğim örnekteki değişkeni strcat ile kullanamazsın.




Bu mesajda bahsedilenler: @mr.thuglife
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.