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#include <stdio.h>
#include <string.h>
#define MAX 30
char * fgets_fix(char * buff, size_t bufflen, FILE * fp);
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 longitud;
printf("\n\n Ingrese primer nombre.....: "); fgets_fix(ptrPN, MAX, stdin);
printf("\n Ingrese segundo nombre....: "); fgets_fix(ptrSN, MAX, stdin);
printf("\n Ingrese apellido..........: "); fgets_fix(ptrAP, MAX, stdin);
longitud
= sprintf(ptrNC
, "%s %s %s", ptrPN
, ptrSN
, ptrAP
);
printf("\n El nombre completo es: %s\n", ptrNC
); printf("\n Total de caracteres..: %d", longitud
);
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;
}
Saludos.
Daniel