<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><br>
He probado tu solución con esta invocación y me devuelve una cadena de mayor tamaño, y por tanto, con basura al inicio.<br>
<span class="">int main(int argc, char *argv[]) {<br>
        if (argc > 1) {<br>
</span>                char *inv = new char[strlen(argv[1])];<br>
                char *aux = new char[strlen(argv[1])];<br>
                char *cad = new char[strlen(argv[1])];<br>
                strcpy(cad, argv[1]);<br>
                inv = voltea(cad, inv, aux);<br>
                std::cout << "La cadena original :" << cad << std::endl;<br>
                std::cout << "La cadena invertida:" << inv << std::endl;<br>
<span class="">        }<br>
        std::cout << "Fin." << std::endl;<br>
        return 0;<br>
}<br>
<br>
</span>El resultado es:<br>
La cadena original :caso<br>
La cadena invertida:════²²²²♠osac<br>
Fin.<br>
<br></blockquote><div> </div><div>No lo comprendo la he utilizado muchas veces y en ningún caso obtengo basura puede tener algo que ver que le coloco un valor inicial a la cadena donde voy a guardar el valor de retorno = "\0" </div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Aparte de eso, con strcpy(&aux[i],&cad[i]);<br>
estás copiando las direcciones de un caracter de cada cadena (si no me equivoco)<br></blockquote><div><br></div><div>con esto estaba intentando copiar un sólo caracter pero no funciona luego lo escribí en la otra función sin usar strcpy</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
Y strcpy(&aux[i],"\0");<br>
creo que no es lo correcto. Debería ser como lo tienes en la siguiente función, con cad[sz+1] = '\0';<br>
<br>
Otro detalle importante es: if (i = tam)<br>
Estás asignando tam a i, en lugar de compararlos: if (i == tam)<br>
<br></blockquote><div><br></div><div>esto fue lo mas increible así me trabajó bien el código pero al corregirlo no funcionó más así que tuve que hacer un cambio</div><div><br></div><div><div>char *strtrc(char *cad, char *aux)</div><div>{<span style="white-space:pre">   </span></div><div><span class="" style="white-space:pre">   </span>int tam = strlen(cad);</div><div><span class="" style="white-space:pre">     </span>tam--;                             //el largo de la cadena menos uno me posiciona en el último caracter</div><div><span class="" style="white-space:pre">     </span></div><div>        strcpy(aux,cad);            //utilizo el aux para no machacar la cadena</div><div><span class="" style="white-space:pre">   </span>aux[tam ] = '\0';             //borro el último caracter y lo sustituyo por el caracter nulo</div><div><span class="" style="white-space:pre">        </span>return aux;</div><div>};</div></div></div></div></div>