Tengo un programa donde necesito pedir los apellidos y nombres y guardarlos en una sola variable de tipo c-style string pero no se como poner el caracter null al final de la cadena y como mostrar unicamente los apellidos y no los nombres. Opte por usar una estructura y hasta aca llego....
#include <iostream>
#include <cstring>
using namespace std;
void pedirDatos();
void mostrarApellido();
struct Personas{
char nombreApellido[30];
}persona[10];
int main(int argc, char *argv[]) {
pedirDatos();
mostrarApellido();
return 0;
}
void pedirDatos(){
for(int i = 0; i < 10; i++){
cout << " Ingrese apellido y nombre separado por un espacio: ";
cin.getline(persona[i].nombreApellido, 30, '\n');
}
}
void mostrarApellido(){
int i = 0, k = 0, contador = 0;
cout << "\n\n Apellidos introducidos: \n\n ";
for(; i < 10; i++){
for(int k = 0; k < 30; k++){
{
cout << i+1 << " - " << persona[i].nombreApellido[k] << "\n";
}
}
}
}
}
#include <iostream>
#include <cstring>
using namespace std;
void pedirDatos();
void mostrarApellido();
struct Personas {
char nombreApellido[30];
}
personas[10];
int main(int argc, char * argv[]) {
memset(personas, 0, sizeof(personas) * 10); // usa memset para inicializar la estructura con ceros
pedirDatos();
mostrarApellido();
return 0;
}
void pedirDatos() {
for (int i = 0; i < 10; i++) {
cout << " Ingrese apellido y nombre separado por un espacio: ";
cin.getline(personas[i].nombreApellido, 30);
}
}
void mostrarApellido() {
int i = 0, k = 0, contador = 0;
cout << "\n\n Apellidos introducidos: \n\n ";
for (; i < 10; i++)
{
char *token = strtok(personas[i].nombreApellido, " "); // usa strtok para dividir la cadena por el espacio y obtener los tokens
if(token && (token = strtok(nullptr, " ")) != nullptr)
{
cout << i + 1 << " - " << token << "\n";
}
}
}
Solo he añadido las dos lineas que necesitas basicamente, por otra parte, tu codigo no es el mejor :-\
Saludos
Hola ThunderCls te agradezco la ayuda pero necesitaba una forma mas simple de resolverlo. Saludos.
Cita de: RM_85 en 9 Abril 2020, 21:21 PM
Hola ThunderCls te agradezco la ayuda pero necesitaba una forma mas simple de resolverlo. Saludos.
Mas simple?! Pero si solo le he añadido dos lineas a tu codigo :xD
No son la cantidad de lineas de codigo sino lo que significan, y por que tendria que saberlo??? :huh: