Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: marchiali en 25 Agosto 2014, 19:27 pm



Título: ayuda con strings
Publicado por: marchiali en 25 Agosto 2014, 19:27 pm
hola a todos. el problema que tengo con los string es que no puedo ingresar 2 seguidos.

cada vez que declaro los 2 strings y los ingreso por teclado usando gets o cin.getline no se que pasa con el primero que ingrese, no se si se sobre escribe o se borra, pero con el segundo ingresado esto no pasa.

 espero que puedan aclararme esta duda, gracias.


Título: Re: ayuda con strings
Publicado por: engel lex en 25 Agosto 2014, 19:30 pm
que tal si muestras una sección de código para ver si estás haciendo algo raro? (usa las etiquetas GeSHi)


Título: Re: ayuda con strings
Publicado por: marchiali en 25 Agosto 2014, 19:43 pm
en este programa trato de tomar 2 fechas que se ingresan como string, pasarlas a tipo entero para calcular la edad de una persona, pero la primer fecha me la transforma a 0, las fechas se ingresan con formato aaaa/mm/dd.

Código:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <iomanip>
using namespace std;

int main(int argc, char *argv[]) {
char fecha[8];
char fechanac[8];

gets(fecha);
gets(fechanac);

int actual, nacimiento;
actual= atoi(fecha);
nacimiento= atoi(fechanac);

int edad;
edad=actual-nacimiento;
cout<<actual;
cout<<"edad: "<<setprecision(2)<<edad;
return 0;
}


Título: Re: ayuda con strings
Publicado por: engel lex en 25 Agosto 2014, 20:04 pm
lo que pasa allí es que los string tiene justo el tamaño de la entrada, y el string debe tener por lo menos 1 carácter extra de largo, porque el sistema le va a colocar el símbolo de fin de string (\0), como no tiene lo coloca al principio de la variable... de resto no se por que lo hace solo en 1...

otra cosa.... atoi solo te va a tomar el primer numero encontrando antes de un carácter no numérico... es decir si ingresas 2012/12/31 solo agarra 2012...

solución: has los string de 9 en lugar de 8

te recomiendo hacer debug a los códigos cuando tengas esa clase de errores para que lo detectes tu mismo