This site uses cookies own and third. If you continue to browse consider to accept the use of cookies. OK More Info.

pasar char * values a char[256]

  • 1 Replies
  • 381 Views

0 Members and 1 Guest are viewing this topic.

Offline Solid Water

  • *
  • Underc0der
  • Posts: 157
  • Actividad:
    3.33%
  • Country: 00
  • Reputación 6
  • (:{
    • View Profile

pasar char * values a char[256]

  • 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,
« Last Edit: July 29, 2022, 09:30:27 am by Solid Water »

Marked as best answer by solid water on July 29, 2022, 03:33:14 pm

Offline Solid Water

  • *
  • Underc0der
  • Posts: 157
  • Actividad:
    3.33%
  • Country: 00
  • Reputación 6
  • (:{
    • View Profile

Re: pasar char * values a char[256]

  • 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.
« Last Edit: July 29, 2022, 02:42:39 pm by Solid Water »