Izrazi tipa:
Code:
char *tekst;
tekst = "Neki tekst";
... ma koliko se kompajlirali i radili na primerima, opasni su, pogotovo što si tu planirao i spajanje.
Umesto toga koristi:
Code:
/* nacin 1 */
char tekst1[] = "Neki tekst1";
/* nacin 2 */
char tekst2[12] = "Neki tekst2";
/* nacin 3 */
char tekst3[] = { 'N', 'e', 'k', 'i', ' ', 't', 'e', 'k', 's', 't', '3', '\0' };
/* nacin 4 */
char tekst4[12] = { 'N', 'e', 'k', 'i', ' ', 't', 'e', 'k', 's', 't', '4', '\0' };
/* nacin 5 */
char *tekst5 = "Neki tekst5";
/* nacin 6 */
char tekst6[12];
strcpy( tekst6, "Neki tekst6" );
/* nacin 7 */
char *tekst7;
tekst7 = (char*)malloc( 12 );
if ( tekst7 )
{
strcpy( tekst7, "Neki tekst7" );
/* ovde uradi nesto sa tekstom, pre free */
}
free( tekst7 );
Dakle, u gornjim primerima inicijalizacija polja se vrši ili direktno sa deklaracijom, ili se kopira u prethodno *rezervisan* prostor.
Što se tiče spajanja, nema tu ništa spektakularno:
Code:
char odrediste[100] = "tekst1";
char izvor[100] = "tekst2";
strcat( odrediste, izvor );
printf( "%s\n", odrediste ); /* odrediste == tekst1tekst2 */
... naravno, tvoja je odgovornost da paziš da li je odrediste dovoljno prostrano (100) za oba stringa.