Próbuję więc dołączyć char
do char*
.Dodatek C char do char *
Na przykład mam char *word = " ";
Mam też char ch = 'x';
robię append(word, ch);
Stosując tę metodę ..
void append(char* s, char c)
{
int len = strlen(s);
s[len] = c;
s[len+1] = '\0';
}
daje mi błąd segmentacji, i rozumiem, dlaczego sądzę. Ponieważ s[len]
jest poza zakresem. Jak sprawić, żeby to działało? Muszę również wyczyścić char*
, gdybym użył czegoś w rodzaju char word [500]; Jak mam to wyjaśnić, skoro ma do niego dołączone jakieś postacie? Czy strlen
z tego będzie zawsze 500
? Z góry dziękuję.
"Ponieważ s [len] jest poza zasięgiem." <- Bardzo dobrze dostrzeżony dla początkującego! Gratulacje. Jednak nadal masz inny błąd - literał łańcuchowy jest tylko do odczytu, nie możesz modyfikować jego zawartości. –
@ H2CO3 's [len + 1]' jest poza zakresem. 's [len]' jest bajtem zerowym, który nie jest liczony przez 'strlen'. – pmr
@pmr yep, technicznie w porządku. Zamiast tego powinienem napisać "sizeof (s)". –