copiar ciertos valores de una variable en otra variable en lenguaje C.

Iniciado por fafafa01, 18 Abril 2016, 23:39 PM

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

fafafa01

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

int d, a=25-02-1998;

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

d=25021998;

gracias por sus respuestas y saludos.

AlbertoBSD

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.
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

HardForo

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *

fafafa01

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?

Cita de: 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

int d, a=25-02-1998;

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

d=25021998;

gracias por sus respuestas y saludos.


HardForo

#4
Si solo quieres sacar por pantalla juntos ciertos valores....... es muy simple:


cout << a << b << c << d .... << ... << endl;



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


#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

using namespace std;

// se puede generalizar
char* concatnum(int a, int b){
char as[10], bs[10];
static char out[30];

itoa(a,as,10);
itoa(b,bs,10);

strcpy(out,as);
strcat(out,bs);

// podria devolver un "string" (char*) o un entero
return out;
}


int main(void){
cout << concatnum(2,0);
}



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.
HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *

xiruko

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.

#include <stdio.h>
#include <string.h>

int join(int *arr, size_t arr_size)
{
int result, i;
char aux[256];
for (i=0; i<arr_size; i++) {
sprintf(aux + strlen(aux), "%d", arr[i]);
}
sscanf(aux, "%d", &result);
return result;
}

int main(void)
{
int arr[4] = {1, 2, 3, 4};
int result = join(arr, 4);
printf("%d\n", result);
return 0;
}


Saludos!

HardForo

Compañero @xiruko : te consulto por el uso de sscanf() con "%d"

Tu sabras si es mas eficiente que usar atoi() ?
HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *

xiruko

Cita de: boctulus 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() ?

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

Saludos!

HardForo

#8
Gracias, me pareció interesante tu codigo y el enlace a StackOverflow   ;)
HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *

geeke

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.