Para empezar, no puede modificar literales de cadena. Es un comportamiento indefinido.
Para solucionar esto se puede hacer str
un array local:
char str[] = "First string";
Ahora, tendrá un segundo problema, es que str
no es lo suficientemente grande como para contener str2
. Por lo tanto, necesitará aumentar la longitud de la misma. De lo contrario, rebasará str
, que también es un comportamiento indefinido. Para solucionar este segundo problema, debe hacer str
al menos tan largo como str2
. O asignar de forma dinámica:
char *str2 = "Second string";
char *str = malloc(strlen(str2) + 1); // Allocate memory
// Maybe check for NULL.
strcpy(str, str2);
// Always remember to free it.
free(str);
hay otras maneras más elegantes de hacer esto implica VLA (en C99) y pila de asignación, pero no voy a entrar en los que su uso es algo cuestionable.
Como @SangeethSaravanaraj señaló en los comentarios, todo el mundo se perdió la #import
. Debe ser #include
:
#include <stdio.h>
#include <string.h>
Bueno, 'strlen (str)
¿A todos les falta el '# import'? !! –
@SangeethSaravanaraj Sí, no puedo creerlo yo mismo. jajaja. Todos lo perdieron ... – Mysticial