Primero que nada unos detalles de tu código:
- No se recomienda el uso de gets() por que no hace ningún control sobre el tamaño de la entrada, lo mismo pasa con scanf en la forma en que está utilizado.
- Cuando el miembro de una estructura es un arreglo, este es un puntero, es decir, no es necesario aplicar el operador de referencia para pasárselo a scanf().
En cuanto a tus preguntas, para saber si un elemento está borrado o no, o bien utilizás un nuevo miembro en la estructura a modo de flag de borrado , o podés verificar si hay datos o no en los distintos miembros de la estructura.
Para el borrado, lo mas simple es usar un único memset:
Código:
memset(cuentah[i],0,sizeof(*cuentah));
o un memset por cada miembro:
Código:
memset(cuentah[i].nombre,0,sizeof(cuentah->nombre));
memset(cuentah[i].apellido,0,sizeof(cuentah->apellido));
.
.
.
o
Código:
*cuentah[i].nombre = 0;
*cuentah[i].apellido = 0;
.
.
.
En realidad hay otras opciones, pero con eso debería bastarte para hacer pruebas, claro está que depende de que opción elijas para considerarlos vacíos o no a los elementos del arreglo.
Saludos
Marcadores