Ver Mensaje Individual
  #6 (permalink)  
Antiguo 13/12/2013, 15:21
RoDaVi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Arreglos,punteros y sprintf.-

Hola guzzano.
Ahora acate cargo, me picó el bicho de la curiosidad y quiero me ayudes a completarlo, todo funciona sólo que ahora quiero capturar en la función principal si no se ingresa nada en cualquiera de los 3 casos para hacer un bucle y que se pueda salir sólo si la variable contiene algún dato.-
Lo probé de diversas formal pero no logro capturar el retorno de la función.-

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define MAX 30
  5.  
  6. char * fgets_fix(char * buff, size_t bufflen, FILE * fp);
  7.  
  8. int main(void){
  9.     char nombre_completo[93], *ptrNC = nombre_completo,
  10.          primer_nombre[MAX], *ptrPN = primer_nombre,
  11.          segundo_nombre[MAX], *ptrSN = segundo_nombre,
  12.          apellido[MAX], *ptrAP = apellido;
  13.     int longitud;
  14.    
  15.     printf("\n\n Ingrese primer nombre.....: ");
  16.     fgets_fix(ptrPN, MAX, stdin);
  17.    
  18.     printf("\n Ingrese segundo nombre....: ");
  19.     fgets_fix(ptrSN, MAX, stdin);
  20.    
  21.     printf("\n Ingrese apellido..........: ");
  22.     fgets_fix(ptrAP, MAX, stdin);
  23.    
  24.     longitud = sprintf(ptrNC, "%s %s %s", ptrPN, ptrSN, ptrAP);
  25.    
  26.     printf("\n El nombre completo es: %s\n", ptrNC);
  27.     printf("\n Total de caracteres..: %d", longitud);
  28.    
  29.     return 0;
  30. }
  31.  
  32.  
  33. char * fgets_fix(char * buff, size_t bufflen, FILE * fp){
  34.     if (fgets(buff, bufflen, fp) != NULL){  // Devolverá NULO si hay un error.
  35.         char * nw = NULL;                   // Se crea un puntero nulo.
  36.         nw = strchr(buff, '\n');            // strchr busca en la variable buff el carácter \n y devuelve
  37.                                             // la posición en la memoria donde está ese carácter.
  38.      
  39.         if (nw != NULL){                    // Verificamos que nw tenga valor después de usar el strchr
  40.             *nw = '\0';                     // Le asigamos a la dirección encontrada \0 que antes valía \n
  41.         }
  42.        
  43.         return buff;
  44.     }
  45.     return NULL;
  46. }

Saludos.
Daniel