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)

Respuestas a la pregunta(8)

Su respuesta a la pregunta