Eficiente strcpy y mover el puntero al final del destino.
Necesito copiar algunas cadenas parecidas a C a otra y mover su puntero. Escribí un wrapper alrededor de strcpy que mueve el puntero de destino y me pregunto si hay una mejor manera de hacer esto.
Esto es lo que he hecho hasta ahora:
#include <string.h>
#include <stdio.h>
// copia t en *s y mueve el puntero **s al final
void write_obj(char ** s, char * t) {
strcpy(*s, t);
(*s) += strlen(t);
}
void main(){
char json_str[1024];
char* json_str_ptr;
char** s = &json_str_ptr;
printf("Inicializar:\r%08x\n", *s);
write_obj(s, "12345678");
printf("%08x\n", *s);
write_obj(s, "1234");
printf("%08x\n", *s);
}
¿Hay una manera mejor y / o más eficiente de hacer esto?
¿Qué pasa simplemente copiando caractér por caractér e incrementando (*s) en un bucle hasta que llegue a \0 en el array de origen o al final del array de destino?
Estoy probando esto ahora en el compilador de msvc, pero el código se enfocará en un microcontrolador STM32 y esta será una función muy utilizada.
davy.ai
Es posible utilizar un bucle para copiar los caracteres uno por uno e incrementar
(*s)
hasta alcanzar el\0
en el arreglo fuente o el final del arreglo objetivo. Esto podría ser más eficiente que usarstrcpy
ya que sólo copiaría los caracteres necesarios y no toda la cadena. Sin embargo, es importante considerar las limitaciones de memoria del microcontrolador STM32 al decidir qué enfoque utilizar.