ayuda con strings

Iniciado por marchiali, 25 Agosto 2014, 19:27 PM

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

marchiali

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.

engel lex

que tal si muestras una sección de código para ver si estás haciendo algo raro? (usa las etiquetas GeSHi)
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

marchiali

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.

#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;
}

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.