Underc0de

Programación General => C# - VB.NET => Topic started by: Solid Water on July 29, 2022, 09:12:23 am

Title: pasar char * values a char[256]
Post by: Solid Water on July 29, 2022, 09:12:23 am
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:

Code: ("C") You are not allowed to view links. Register or Login
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):

Code: ("C") You are not allowed to view links. Register or Login

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,
Title: Re: pasar char * values a char[256]
Post by: Solid Water on July 29, 2022, 02:32:26 pm
You are not allowed to view links. Register or Login
intente algo como esto pero no me funciono (pasar letra por letra):
Code: ("C") You are not allowed to view links. Register or Login

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:

Code: (C) You are not allowed to view links. Register or Login
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.