0%
Theme NexT works best with JavaScript enabled
c string copy strdup
#include <string.h>
char *strdup(const char *s1);
intro
return a pointer to a new string, which is a duplicate of the string pointed to by s1. The returned pointer can be passed to free().
A null pointer is returned if the new string cannot be created.return
return a pointer to a new string on success
a null pointer and set errno to indicate the error.
e.g. 1 2 3 4 5 6 7 8 #include <string.h> const char *stringA = "foo"; char *stringB = NULL; stringB = strdup(stringA); /* ... */ free(stringB);
reference
strcpy
#include <string.h>
char *strcpy(char *restrict s1, const char *restrict s2);
intro
you need to allocate space first, which isn’t hard to do but can lead to an overflow error, if not done correctly:return
return s1
no return value is reserved to indicate an error.e.g. 1 2 3 4 5 6 7 8 9 10 #include <string.h> const char *stringA = "foo"; char *stringB = NULL; /* you must add one to cover the byte needed for the terminating null character */ stringB = (char *) malloc( strlen(stringA) + 1 ); strcpy( stringB, stringA ); /* ... */ free(stringB);
strncpy
#include <string.h>
char *strncpy(char *s1, const char *s2, size_t n);
intro
copies not more than n bytes (bytes that follow a null byte are not copied) from the array pointed to by s2 to the array pointed to by s1.
If copying takes place between objects that overlap, the behaviour is undefined.return
returns s1
no return value is reserved to indicate an error.e.g. 1 2 3 4 5 6 7 8 9 10 #include <string.h> const char *stringA = "foo"; char *stringB = NULL; /* you must add one to cover the byte needed for the terminating null character */ stringB = (char *) malloc( strlen(stringA) + 1 ); strcpy( stringB, stringA ); /* ... */ free(stringB);
reference
c++ - Proper way to copy C strings - Stack Overflow