Используйте функцию strcpy
.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[] )
{
char *str = "Hello World";
size_t length = strlen(str);
char *s = (char*)malloc(sizeof(char) * (length + 1));
strcpy(s, str);
s[length] = '\0'; // makes sure it's NUL terminated
printf("%s", s);
free(s);
return 0;
}
При выделении целевого буфера обратите внимание на тот факт, что строки заканчиваются символом NUL
.
Чтобы скопировать только подстроку, используйте strncpy
:
strncpy(s, str + 6, strlen(str) - 6);
просто скопирует "Мир" в s
.
В любом случае, убедитесь, что ваши C-строки NUL
завершены, прежде чем использовать такие функции, как printf
.
См. Также strcat
и strncat
. И хорошо, ознакомьтесь с массивами и указателями C.