Forma correcta de copiar cadenas C
Existe una manera fácil de copiar cadenas en C?
Yo tengoconst char *stringA
, y yo quierochar *stringB
para tomar el valor (tenga en cuenta questringB
no esconst
). Lo intentéstringB=(char*) stringA
, pero eso hace questringB
todavía apunta a la misma ubicación de memoria, entonces cuandostringA
cambios posteriores,stringB
también lo hace.
También he probadostrcpy(stringB,stringA)
, pero parece que sistringB
no se inicializó en una matriz lo suficientemente grande, hay una falla predeterminada. Sin embargo, no tengo mucha experiencia con las cuerdas en C, ¿me estoy perdiendo algo obvio? Si solo inicializostringB
comochar *stringB[23]
, porque sé que nunca tendré una cadena más larga que22
caracteres (y teniendo en cuenta el terminador nulo), ¿es esa la forma correcta? SistringB
se verifica la igualdad con otras cadenas C, ¿afectará el espacio adicional a algo?
(y solo usar cadenas no es una solución aquí, ya que necesito una sobrecarga mínima y fácil acceso a los caracteres individuales)