Buenas tardes. Bienvenido al foro.
Prueba a limpiar el buffer de lectura.
Código C++:
Ver originalstd::cin.ignore( std::numeric_limits< int >::max( ) );
La línea anterior elimina 'n' caracteres del buffer de lectura (la purga terminará si llega a un salto de línea). 'n' viene dado por numeric_limits<>::max( ) y equivale, en este caso, al int más alto que soporte tu sistema, que normalmente será 2^31-1.
También te hubiese valido algo tal que:
pero implica introducir valores directamente en el código y esa es una práctica a evitar.
En cualquier caso lo suyo sería homogeneizar un poco el sistema, podrías usar únicamente cin.
Código C++:
Ver original// Equivalente a fgets(localidad,30,stdin);
cin.read( localidad, 30 );
No se qué grado de libertad tienes, pero yo quitaría los char[] y usaría std::string en su lugar.
Y, como remate final, en C++ la palabra clave "struct" no es necesaria cuando vas a declarar una variable:
Código C++:
Ver original// Aquí si tienes que usar struct
struct oficina{
int numero;
long CP;
char nombre[40];
char direccion[40];
char ciudad[40];
char municipio[40];
};
// Pero aquí no
oficina lista[200];
Un saludo