Hola a todos.
Bueno al fin pude completarlo, lo dejo para que me digan en que puedo mejorarlo y tal vez alguien se pueda beneficiar con algunas líneas.-
Código C:
Ver original#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 30
char * fgets_fix(char * buff, size_t bufflen, FILE * fp);
void mostrar(const char IngPN[], const char IngSN[], const int orden);
int main(void){
char nombre_completo[93], *ptrNC = nombre_completo,
primer_nombre[MAX], *ptrPN = primer_nombre,
segundo_nombre[MAX], *ptrSN = segundo_nombre,
apellido[MAX], *ptrAP = apellido;
int orden = 0;
do{
printf("\n\n Ingrese primer nombre.....: "); fgets_fix(ptrPN, MAX, stdin);
orden++;
do{
mostrar(ptrPN, ptrSN, orden);
printf("\n Ingrese segundo nombre....: "); fgets_fix(ptrSN, MAX, stdin);
orden++;
do{
mostrar(ptrPN, ptrSN, orden);
printf("\n Ingrese apellido..........: "); fgets_fix(ptrAP, MAX, stdin);
sprintf(ptrNC
, "%s %s %s", ptrPN
, ptrSN
, ptrAP
);
printf("\n El nombre completo es: %s\n", ptrNC
);
return 0;
}
char * fgets_fix(char * buff, size_t bufflen, FILE * fp){
if (fgets(buff
, bufflen
, fp
) != NULL
){ // Devolverá NULO si hay un error. char * nw = NULL; // Se crea un puntero nulo.
nw
= strchr(buff
, '\n'); // strchr busca en la variable buff el carácter \n y devuelve // la posición en la memoria donde está ese carácter.
if (nw != NULL){ // Verificamos que nw tenga valor después de usar el strchr
*nw = '\0'; // Le asigamos a la dirección encontrada \0 que antes valía \n
}
return buff;
}
return NULL;
}
void mostrar(const char IngPN[], const char IngSN[], const int orden){
if(orden == 1){
printf("\n\n Ingrese primer nombre.....: %s", IngPN
); }
if(orden == 2){
printf("\n\n Ingrese primer nombre.....: %s", IngPN
); printf("\n Ingrese segundo nombre....: %s", IngSN
); }
}
Saludos y muchas gracias por tu tiempo guzzano.-
Saludos.
Daniel