Hola en C# existe un metodo .toUpper() que devuelve una copia del string pasado a mayúsculas.
Por lo que si yo tengo un string que me ingresan como HolaComoEstas y quiero compararlo con HOLACOMOESTAS, le hago if(variable.toUpper() == "HOLACOMOESTAS") simplifico todo pasandolo a mayúsculas para no tener diferencias en cuanto a si son capitales o no.
el caso es que estoy trabajando con un programa en C.
Necesito realizar esto mismo pero las funciones toUpper(variable) o strupr(variable) me convierten la variable a mayúscula cambiando su valor inicial.
entonces en los casos que yo tengo un array del tipo char variable[256].
creo una char[256] auxiliar a cambiarla a mayúscula y conservar mi valor inicial en la otra, esto lo hago con strcpy.
el problema lo tengo al querer hacerlo con un char *.
ya que cuando hago:
char variable_auxiliar[256]
char * Ptr_variable; //con un valor asignado por ejemplo: Hola Como Estas?
strcpy(variable_auxiliar, Ptr_variable)
strupr(variable)
Se copia la dirección de memoria y no el contenido del char *, por lo que al modificar variable_auxiliar modifico tambien Ptr_variable.
Yo necesito una funcion que no cambie el source de lo que cambio a upper case, o bien pasar el contenido del char * a char [] sin pasar su dirección de memoria.
intente algo como esto pero no me funciono (pasar letra por letra):
int f = 0;
while(*Ptr_variable != '\0') //fin de línea
{
variable_auxiliar[f] = *Ptr_variable;
f++;
Ptr_variable++;
}
En que estaré fallando, que otro método tengo de copiar los valores del char* a char[].
entonces cuando yo envio un string no deberé preocuparme por que la comparacion falle por mayusculas y minúsculas diferentes.
Recuerdo que creo haberlo hecho tiempo atras, pero no recuerdo cómo.
Desde ya muchas gracias por su tiempo codeando y testeando.
Saludos,