Autor Tema: Convertir arreglo a palabra  (Leído 3216 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado ALFREDOSKY

  • PIC16
  • ***
  • Mensajes: 118
Convertir arreglo a palabra
« en: 24 de Marzo de 2014, 20:30:53 »
Hola a todos, necesito que me ayuden a convertir los datos de un arreglo en una palabra, es decir, ingreso por pantalla touch un correo electronico correo@dominio.xx, esto lo recibo en eun arreglo pero necesito pasarlo a una palabra estatica, algo asi: "correo@dominio.xx", no se si es posible hacerlo, espero me ayuden, salduos

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Convertir arreglo a palabra
« Respuesta #1 en: 24 de Marzo de 2014, 20:59:13 »



Prueba con memcpy()




Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Convertir arreglo a palabra
« Respuesta #2 en: 24 de Marzo de 2014, 22:19:51 »
no entiendo que quieres hacer, si recibes un arreglo de caracteres, eso es un string, y puedes manipularlo como quieras
"Nada es imposible, no si puedes imaginarlo"

Desconectado ALFREDOSKY

  • PIC16
  • ***
  • Mensajes: 118
Re: Convertir arreglo a palabra
« Respuesta #3 en: 25 de Marzo de 2014, 12:45:02 »
planeta9999 y rivale gracias por sus respuestas, con el memcpy() copio cada caracter de un buffer en otro, pero no puedo usarlo como una variable constante valga la contradiccion; rivale lo que deseo hacer es que al ingresar los datos de un cliente, por ejemplo su correo electronico, lo debo almacenar en una variable, para luego guardarlo en la memoria no borrable; cuando  introduzco el correo lo que estoy haciendo es recibirlo en un arreglo, este arreglo me sirve para validar el correo, es decir, verificar si son correctos el formato, dominio, etc. una vez procesado ok, quiero guardar el nombre del correo como una constante en una variable, por ejemplo si el correo introducido tiene este formato: correo@dominio.xx, en la posicion 0 del arreglo estará la letra 'c', en la posición 1, estará la letra 'o' y así cada posición del arreglo con un correspondiente caracter; como decía, luego de la validación deseo guardar el nombre en una variable, algo asi como guardar la palabra "Hola", quiero guardar "correo@dominio.xx" pero sin ser un arreglo, espero me haya dejado entender, no se si sea posible esta operacion, por esa razon consulto con los que saben  :mrgreen:

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Convertir arreglo a palabra
« Respuesta #4 en: 25 de Marzo de 2014, 12:53:16 »
una cadena la tienes que guardar en un vector, ya que necesitas un byte por cada elemento de la cadena. podrias explicar un poco mas que es lo que quieres hacer con tu cadena, para poder darte una idea de como tratar con tu información

Saludos
"Nada es imposible, no si puedes imaginarlo"

Desconectado ALFREDOSKY

  • PIC16
  • ***
  • Mensajes: 118
Re: Convertir arreglo a palabra
« Respuesta #5 en: 25 de Marzo de 2014, 13:31:20 »
si claro rivale, veras, recibo la informacion del nombre del correo en un vector o arreglo, validado y todo ok, quiero guardar todo el nombre en una variable; es como en el uso de la función atoi, que cuando se tiene un numero en un arreglo, por ejemplo 145, al fin de este arreglo se le agrega un indicador de fin de cadena ('0'), luego al hacer

int num = (atoi)arreglo;

obtengo el numero 145 en la variable num; algo parecido quiero hacer con caracteres; ingreso un correo a un arreglo y quiero guardar el NOMBRE en una variable, algo asi:

(no se que tipo de dato sera) nombre_correo = (funcion o algo que convierta) arreglo_correo;

O sea, de esto:
                      arreglo_correo[c|o|r|r|e|o|@|d|o|m|i|n|i|o|.|c|o|m]

a esto:
             nombre_correo = "correo@dominio.com"

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Convertir arreglo a palabra
« Respuesta #6 en: 25 de Marzo de 2014, 13:33:41 »
planeta9999 y rivale gracias por sus respuestas, con el memcpy() copio cada caracter de un buffer en otro, pero no puedo usarlo como una variable constante valga la contradiccion;


Un String y una Matriz, es lo mismo a efectos de ubicación de los datos en memoria, con memcpy estás copiando con PUNTEROS desde el primer elemento de la matriz al primer caracter del String. En la práctica es lo mismo, puedes leer la matriz como tal, o leerla con un puntero, el string lo puedes tratar como una variable o leer sus caracteres uno a uno como un puntero, como si fuera una matriz.


Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Convertir arreglo a palabra
« Respuesta #7 en: 25 de Marzo de 2014, 13:44:33 »
ya entendí que quieres hacer, verás con los números lo podías hacer porque en un vector tienes un representación con caracteres y la puedes convertir a un número; como decías "123" en caracteres lo puedes convertir a 123 en decimal, y así ocupas solo una variable entera en lugar de un vector de 4 caracteres

sin embargo para una cadena "abc", no puedes convertirla a otro tipo de dato, ya que para cada caracter siempre vas a necesitar un byte, si lo que quieres es referenciar a tu cadena usando una variable puedes usar punteros. es decir, si tienes una cadena

char nombre="alguien";

puedes crear un puntero que apunte al primer elemento de tu cadena

 char *puntero1=nombre;


de esta manera puedes hacer un arreglo de punteros, donde cada elemento apunta a un nombre diferente.

espero te sirva la explicación

Saludos

"Nada es imposible, no si puedes imaginarlo"

Desconectado ALFREDOSKY

  • PIC16
  • ***
  • Mensajes: 118
Re: Convertir arreglo a palabra
« Respuesta #8 en: 25 de Marzo de 2014, 17:29:13 »
Gracias a ambos por su tiempo y sus sugerencias, me dispulpo por la demora de la respuesta, no se actualizaba mi post, se quedo como que yo era el ultimo en escribir, pero veo que me han respondido con paciencia y buen humor, planeta9999, me queda un poco mas claro de la aplicacion de la funcion memcpy() y creo que voy a hacer uso de el; rivale, ahora veo que no es posible hacer lo que deseo tal y como lo plantee, pero la alternativa que propones es una muy buena solucion, implementare las 2 formas que me han propuesto, muchas gracias nuevamente  :-/


 

anything