Cita:
Iniciado por aguml ¿Para que necesitas que sea un puntero a char*? De por si un char* ya es un puntero a su primera posición. No necesitas para nada retornar un puntero a un char* y además te daría problemas ya que eso significa que el char* lo creas dentro de dicha función y se destruye al salir de esta con lo que podría apuntar a cualquier cosa. Si lo que le pasas es un char* y lo modificas dentro de la función retornará conteniendo lo que le hayas copiado dentro de la funcion. Recuerda que las cadenas no se copian con =, hay que usar strcpy, strncpy, memcpy o similares.
Si para modificar el valor de un int en una función necesitas un int*, para modificar la dirección a la que apunta un puntero necesitas un puntero doble. Con un puntero simple únicamente puedes modificar el contenido de la memoria apuntada pero no que el puntero apunte a otro sitio.
Cita:
Iniciado por braedu555 pero no hayo como asignarle el resto de la cadena a ptrFinal.
Eso es porque te has dejado en el tintero la única posibilidad buena jejeje.
Me explico. Tu has probado con:
Código C:
Ver originalptrFinal = &ptrN[i];
*ptrFinal = ptrN[i];
&ptrFinal = &ptrN[i];
Si ambos parámetros son del mismo tipo, en este caso punteros dobles, la asignación es directa:
Como en tu caso necesitas desplazar el puntero un offset dado por I entonces tienes que compensar la indirección:
Los paréntesis ayudan a leer el código: ptrN es un puntero doble, luego (*ptrN) es un puntero a char. (*ptrN)[i] apunta al carácter en cuestión y &((*ptrN)[i]) devuelve la dirección de memoria donde se encuentra dicho carácter.
O también puedes hacer uso de la aritmética de punteros:
Un saludo