Ver Mensaje Individual
  #7 (permalink)  
Antiguo 14/12/2013, 13:54
RoDaVi
Invitado
 
Mensajes: n/a
Puntos:
De acuerdo Respuesta: Arreglos,punteros y sprintf.-

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
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. #define MAX 30
  6.  
  7. char * fgets_fix(char * buff, size_t bufflen, FILE * fp);
  8. void mostrar(const char IngPN[], const char IngSN[], const int orden);
  9.  
  10. int main(void){
  11.     char nombre_completo[93], *ptrNC = nombre_completo,
  12.          primer_nombre[MAX],  *ptrPN = primer_nombre,
  13.          segundo_nombre[MAX], *ptrSN = segundo_nombre,
  14.          apellido[MAX], *ptrAP = apellido;
  15.     int orden = 0; 
  16.          
  17.     do{
  18.         system("cls");
  19.         printf("\n\n Ingrese primer nombre.....: ");
  20.         fgets_fix(ptrPN, MAX, stdin);
  21.     }while(strlen(ptrPN) == 0);
  22.    
  23.     orden++;
  24.     do{
  25.         mostrar(ptrPN, ptrSN, orden);
  26.         printf("\n Ingrese segundo nombre....: ");
  27.         fgets_fix(ptrSN, MAX, stdin);
  28.     }while(strlen(ptrSN) == 0);
  29.    
  30.     orden++;
  31.     do{
  32.         mostrar(ptrPN, ptrSN, orden);
  33.         printf("\n Ingrese apellido..........: ");
  34.         fgets_fix(ptrAP, MAX, stdin);
  35.     }while(strlen(ptrAP) == 0);
  36.  
  37.     sprintf(ptrNC, "%s %s %s", ptrPN, ptrSN, ptrAP);
  38.    
  39.     printf("\n El nombre completo es: %s\n", ptrNC);
  40.    
  41.     return 0;
  42. }
  43.  
  44.  
  45. char * fgets_fix(char * buff, size_t bufflen, FILE * fp){
  46.     if (fgets(buff, bufflen, fp) != NULL){  // Devolverá NULO si hay un error.
  47.         char * nw = NULL;                   // Se crea un puntero nulo.
  48.         nw = strchr(buff, '\n');            // strchr busca en la variable buff el carácter \n y devuelve
  49.                                             // la posición en la memoria donde está ese carácter.
  50.      
  51.         if (nw != NULL){                    // Verificamos que nw tenga valor después de usar el strchr
  52.             *nw = '\0';                     // Le asigamos a la dirección encontrada \0 que antes valía \n
  53.         }
  54.        
  55.         return buff;
  56.     }
  57.     return NULL;
  58. }
  59.  
  60. void mostrar(const char IngPN[], const char IngSN[], const int orden){
  61.     system("cls");
  62.     if(orden == 1){
  63.         printf("\n\n Ingrese primer nombre.....: %s", IngPN);
  64.     }
  65.     if(orden == 2){
  66.         printf("\n\n Ingrese primer nombre.....: %s", IngPN);
  67.         printf("\n Ingrese segundo nombre....: %s", IngSN);
  68.     }
  69. }

Saludos y muchas gracias por tu tiempo guzzano.-

Saludos.
Daniel

Última edición por RoDaVi; 15/12/2013 a las 07:44