pasar char * values a char[256]

Iniciado por Solid Water, Julio 29, 2022, 09:12:23 AM

Tema anterior - Siguiente tema

0 Miembros y 2 Visitantes están viendo este tema.

Julio 29, 2022, 09:12:23 AM Ultima modificación: Julio 29, 2022, 09:30:27 AM por Solid Water
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:

Código: "C"

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):

Código: "C"


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,

Julio 29, 2022, 02:32:26 PM #1 Ultima modificación: Julio 29, 2022, 02:42:39 PM por Solid Water
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
intente algo como esto pero no me funciono (pasar letra por letra):
Código: "C"


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[].


Ahora si, con un debugger que realmente sirve me di cuenta que solo faltaba a ese codigo agregarle:

variable_auxiliar[f] = '\0';

para dar fin a la línea luego de pasar letra por letra, ya que contenía basura, es que en el programa que estaba trabajando era muy díficil debuggearlo por lo que aislé el código para debuggear tranquilo.

Les dejo el programa:

Código: C

char *Ptr_variable;

Ptr_variable = "esto es un string cabron";

printf("%s", Ptr_variable);

int f = 0;

char variable_auxiliar[50];

while(*Ptr_variable != '\0') //fin de línea
{
variable_auxiliar[f] = *Ptr_variable;
f++;
   Ptr_variable++;
}

variable_auxiliar[f] = '\0';
printf("%s", variable_auxiliar);


Ahora le podre hacer strupr a la variable auxiliar y conservar el contenido de mi variable inicial.

Gracias, Saludos.