Here jest roztwór roboczy:
#include <stdio.h>
#include <string.h>
int main(int argc, char** argv)
{
char str1[16];
char str2[16];
strcpy(str1, "sssss");
strcpy(str2, "kkkk");
strcat(str1, str2);
printf("%s", str1);
return 0;
}
wyjściowa:
ssssskkkk
Musisz przydzielić pamięci dla ciągów. W powyższym kodzie deklaruję str1
i str2
jako tablice znaków zawierające 16 znaków. Użyłem strcpy
, aby skopiować znaki literałów łańcuchowych do nich i strcat
, aby dołączyć znaki str2
do końca .Oto, jak te tablice znakowe wyglądać w trakcie realizacji programu:
After declaration (both are empty):
str1: [][][][][][][][][][][][][][][][][][][][]
str2: [][][][][][][][][][][][][][][][][][][][]
After calling strcpy (\0 is the string terminator zero byte):
str1: [s][s][s][s][s][\0][][][][][][][][][][][][][][]
str2: [k][k][k][k][\0][][][][][][][][][][][][][][][]
After calling strcat:
str1: [s][s][s][s][s][k][k][k][k][\0][][][][][][][][][][]
str2: [k][k][k][k][\0][][][][][][][][][][][][][][][]
pan nie udaje się przeznaczyć bufor docelowy wystarczającej wielkości, a próby zapisu do pamięci niemodyfikowalne. –
Kiedy mówisz "to nie działa?", Co masz na myśli? Co to jest drukowanie zamiast tego, co powinno? Nawet jeśli jest to dość oczywiste, powinieneś również powiedzieć, co myślisz, że ma wydrukować, aby było jasne. – qaphla
zobacz to pytanie [Używanie strcat w C] (http://stackoverflow.com/questions/419604/using-strcat-in-c) – lsalamon