Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: fafafa01 en 18 Abril 2016, 23:39 pm



Título: copiar ciertos valores de una variable en otra variable en lenguaje C.
Publicado por: fafafa01 en 18 Abril 2016, 23:39 pm
Hola, como dice el titulo, lo que quiero hacer es:

copiar de una variable entera cierta información y guardarla en otra variable.

el problema surge al poner en la variable entero una fecha como la que sigue

Código
  1. int d, a=25-02-1998;

quisiera que la función le saque el guion medio a esa variable:

Código
  1. d=25021998;

gracias por sus respuestas y saludos.


Título: Re: copiar ciertos valores de una variable en otra variable en lenguaje C.
Publicado por: AlbertoBSD en 18 Abril 2016, 23:47 pm
a=25-02-1998

Tu necesitas aprender a manejar cadenas.

la instruccion que muestras es 25-02 = 23-1998 = -1975

😆😆😆

Necesitas hacer substrings y cada que encuentres un guion lo sustitulles.


Título: Re: copiar ciertos valores de una variable en otra variable en lenguaje C.
Publicado por: HardForo en 19 Abril 2016, 01:22 am
Podrias hacerlo con la funcion strok()


Título: Re: copiar ciertos valores de una variable en otra variable en lenguaje C.
Publicado por: fafafa01 en 19 Abril 2016, 03:37 am
He logrado separar cada numero en un arreglo y deshacerme de los guiones, pero ahora cuando sumo la primer celda del arreglo (ej: 2) con la segunda celda del arreglo (ej: 0), no da 20. ¿hay alguna forma de sumar esos enteros 2+0=20?

Hola, como dice el titulo, lo que quiero hacer es:

copiar de una variable entera cierta información y guardarla en otra variable.

el problema surge al poner en la variable entero una fecha como la que sigue

Código
  1. int d, a=25-02-1998;

quisiera que la función le saque el guion medio a esa variable:

Código
  1. d=25021998;

gracias por sus respuestas y saludos.



Título: Re: copiar ciertos valores de una variable en otra variable en lenguaje C.
Publicado por: HardForo en 19 Abril 2016, 04:16 am
Si solo quieres sacar por pantalla juntos ciertos valores....... es muy simple:

Código
  1. cout << a << b << c << d .... << ... << endl;
  2.  


Si verdaderamente necesitas concatenar porque vas a devolver eso en una funcion, etc...

Código
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. using namespace std;
  7.  
  8. // se puede generalizar
  9. char* concatnum(int a, int b){
  10. char as[10], bs[10];
  11. static char out[30];
  12.  
  13. itoa(a,as,10);
  14. itoa(b,bs,10);
  15.  
  16. strcpy(out,as);
  17. strcat(out,bs);
  18.  
  19. // podria devolver un "string" (char*) o un entero
  20. return out;
  21. }
  22.  
  23.  
  24. int main(void){
  25. cout << concatnum(2,0);
  26. }
  27.  


EDIT: La funcion que puse no tiene verdadera utilidad (solo te sirve para mirar como funcionan strcpy y strcat) porque solo recibe 2 valores, iba a generalizar pero me tuve que ir a dormir y otro compañero ya te dio una respuesta mejor ahora.


Título: Re: copiar ciertos valores de una variable en otra variable en lenguaje C.
Publicado por: xiruko en 19 Abril 2016, 05:17 am
Hola,

Como en programación hay mil maneras de hacer una misma cosa, te dejo otra opción para juntar un array de enteros en uno solo. Ten cuidado con el valor máximo que puede tomar un entero, ya que con esta función es muy fácil pasarlo si se utiliza mal, y ahora mismo no hace ningún tipo de verificación.

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int join(int *arr, size_t arr_size)
  5. {
  6. int result, i;
  7. char aux[256];
  8. for (i=0; i<arr_size; i++) {
  9. sprintf(aux + strlen(aux), "%d", arr[i]);
  10. }
  11. sscanf(aux, "%d", &result);
  12. return result;
  13. }
  14.  
  15. int main(void)
  16. {
  17. int arr[4] = {1, 2, 3, 4};
  18. int result = join(arr, 4);
  19. printf("%d\n", result);
  20. return 0;
  21. }

Saludos!


Título: Re: copiar ciertos valores de una variable en otra variable en lenguaje C.
Publicado por: HardForo en 19 Abril 2016, 14:25 pm
Compañero @xiruko : te consulto por el uso de sscanf() con "%d"

Tu sabras si es mas eficiente que usar atoi() ?


Título: Re: copiar ciertos valores de una variable en otra variable en lenguaje C.
Publicado por: xiruko en 19 Abril 2016, 16:34 pm
Compañero @xiruko : te consulto por el uso de sscanf() con "%d"

Tu sabras si es mas eficiente que usar atoi() ?

Hola,

Es más eficiente atoi debido a que se ahorra parsear la cadena buscando los especificadores como hace sscanf. Usé sscanf para aportar otras funciones distintas a las que ya habían en el tema.

Aquí puedes encontrar una comparación muy buena entre ambas funciones:

http://stackoverflow.com/questions/3420629/convert-string-to-integer-sscanf-or-atoi (http://stackoverflow.com/questions/3420629/convert-string-to-integer-sscanf-or-atoi)

Saludos!


Título: Re: copiar ciertos valores de una variable en otra variable en lenguaje C.
Publicado por: HardForo en 19 Abril 2016, 16:47 pm
Gracias, me pareció interesante tu codigo y el enlace a StackOverflow   ;)


Título: Re: copiar ciertos valores de una variable en otra variable en lenguaje C.
Publicado por: geeke en 19 Abril 2016, 18:32 pm
atoi() es inseguro, evita utilizarlo en lo posible a no ser en casos sencillos y controlados; esta función no proporciona ninguna funcionalidad para el tratamiento de errores. El problema más importante con esta es que conduce a un comportamiento indefinido en caso de desbordamiento; por eso es preferible usar strtol una alternativa mucha mas segura por obvias razones.