SORU
21 Kasım 2008, Cuma


Nasıl bir arada C harflerden oluşan dizeler inş/?

C çalışıyorum ve bir kaç şey bağlamak gerekiyor.

Ben şu an bu var:

message = strcat("TEXT " , var);

message2 = strcat(strcat("TEXT ", foo), strcat(" TEXT ", bar));

Şimdi Eğer C deneyimi varsa bu çalıştırmak için çalıştığınızda, Bölümleme Hatası verir bunun farkındasınız eminim. Bu nasıl bir çözüm?

CEVAP
21 Kasım 2008, Cuma


C, "" sadece düz char diziler. dizeleri Bu nedenle, doğrudan bir arada yapamazsın "dizeleri".

Dize dize sonu dest işaret src ile işaret ekler strcat işlevi kullanabilirsiniz:

char *strcat(char *dest, const char *src);

Burada example from cplusplus.com bir:

char str[80];
strcpy(str, "these ");
strcat(str, "strings ");
strcat(str, "are ");
strcat(str, "concatenated.");

İlk parametre için hedef tampon kendisini sağlamak gerekir. Hedef tampon char dizi bir tampon olmalı. E. g.: char buffer[1024];

Emin olunilk parametre içine kopyalamaya çalıştığın şeyi saklamak için yeterli alan var. Eğer sizin için kullanılabilir, fonksiyon gibi kullanmak için güvenli değildir: açıkça hedef arabellek boyutunu belirtmek için strcpy_s strcat_s.

Not: Dize değişmez bir sabit. bir o yana bir tampon olarak kullanılabilir Böylece, her zaman tampon için char bir diziye ayırmak zorunda.

strcat dönüş değeri göz ardı edilebilir, sadece ilk argüman olarak kabul edildi aynı işaretçi döndürür. Kolaylık sağlamak için vardır, ve bir satır kod içine çağırır zinciri için izin verir:

strcat(strcat(str, foo), bar);

Sorun aşağıdaki gibi çözülebilir

char *foo = "foo";
char *bar = "bar";
char str[80];
strcpy(str, "TEXT ");
strcat(str, foo);
strcat(str, bar);

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • erikbjgn's channel

    erikbjgn's c

    12 Mayıs 2008
  • Kassem G

    Kassem G

    25 EKİM 2006
  • The CGBros

    The CGBros

    20 AĞUSTOS 2011