------------------------------------------------------------------------------------------------------------------
Ya esta, lo resolví.
------------------------------------------------------------------------------------------------------------------
Dejo mi resolución por si a alguien le sirve:
------------------------------------------------------------------------------------------------------------------
Código (c) [Seleccionar]
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
typedef struct {
int codigo;
char descripcion[60];
char fecha[9];
int pagado;
} registro;
void alta();
int baja();
void modificaciones();
void consultas();
int eliminarRegistro(int);
void IngresarRegistro(int);
int buscar(char[80]);
void ingresarClave(char[80]);
void grabar();
void leer();
int cantidad = 0;
registro registros[100];
FILE* archivo;
int main() {
int op;
do {
system("cls");
printf("[0] Salir\n");
printf("[1] Alta\n");
printf("[2] Baja\n");
printf("[3] Modificacion\n");
printf("[4] Consulta\n");
printf("[5] Grabar\n");
printf("[6] Leer\n");
scanf("%d", &op);
system("cls");
switch (op)
{
case 1: printf("[1] Ingrese los datos del pago de la factura de un Usuario para darlos de alta:\n");
alta();
break;
case 2: printf("[2] Ingrese el codigo de la facturacion que quiere dar de baja de la lista junto con todos sus datos:\n");
baja();
break;
case 3: printf("[3] Ingrese el codigo de la facturacio al cual le quiere modificar todos sus datos, inclusive el mismo codigo: \n");
modificaciones();
break;
case 4: printf("[4] Aca se refleja la lista de codigos facturados con sus respectivos datos: \n");
consultas();
break;
case 5: printf("[5] Usted selecciono la opcion de guardar sus datos en una unidad pendrive: \n");
grabar();
break;
case 6:printf("[6] Usted selecciono la opcion de leer los datos guardados: \n");
leer();
break;
case 0: printf("Gracias por usar el programa! Vuelva pronto.\n");
break;
default:
printf("Opcion invalida! La opcion [%d] no existe\n", op);
printf("\n");
system("PAUSE");
break;
}
} while (op != 0);
}
void alta() {
if (cantidad <= 100) {
IngresarRegistro(cantidad);
cantidad++;
system("cls");
}
else {
printf("Se ocuparon todos los espacios disponible.\n");
printf("IMPOSIBLE agregar otro registro.");
}
}
void IngresarRegistro(int posicion) {
printf("\nIngrese un codigo de facturacion: ");
scanf("%d", ®istros[posicion].codigo);
printf("\nIngrese la descripcion de la facturacion: ");
scanf("%s", registros[posicion].descripcion); //NOTA PERSONAL: Solo se usa el "&" cuando es un int
printf("\nIngrese la fecha de facturacion: ");
scanf("%s", registros[posicion].fecha);
printf("\nIngrese 1 si se pago la factura y 2 si no: ");
scanf("%d", ®istros[posicion].pagado);
while (registros[posicion].pagado > 2 || registros[posicion].pagado < 1) {
printf("\nReingrese el pàgo. 1 si se pago la factura y 2 si no: ");
scanf("%d", ®istros[posicion].pagado);
}
}
int baja() {
int codigo;
printf("\nIngrese el codigo: ");
scanf("%d", &codigo);
int indice = buscar(codigo);
if (indice != -1) {
eliminarRegistro(indice);
}
else {
printf("%d No se encuentra dado de Alta \n", codigo);
system("PAUSE");
}
return indice;
}
int buscar(int codigo) {
int i = cantidad-1;
for (; i > -1 && codigo != registros[i].codigo; i--);
return i;
}
int eliminarRegistro(int eliminar) {
for (int c = eliminar; c < cantidad; c++)
registros[c] = registros[c + 1];
cantidad--;
}
void modificaciones() {
int codigo;
printf("\nIngrese el codigo: ");
scanf("%i", &codigo);
int indice = buscar(codigo);
if (indice != -1) {
IngresarRegistro(indice);
}
else {
printf("%d --> No se encuentra dado de Alta \n", codigo);
system("PAUSE");
}
return indice;
}
void consultas() {
printf(" Codigo || Descripcion || Fecha || .Pagado?)\n");
for (int i = 0; i < cantidad; i++) {
printf("%27d %15s %15s %6d\n", registros[i].codigo, registros[i].descripcion, registros[i].fecha, registros[i].pagado);
}
system("PAUSE");
system("cls");
}
void grabar() {
printf("\nGrabando...\n");
archivo = fopen("E:\Registros de Facturacion.txt", "wb");
fwrite(registros, sizeof(registro), cantidad, archivo);
fclose(archivo);
printf("\n Grabacion Finalizada\n");
system("PAUSE");
}
void leer() {
printf("\nDentro del Archivo se puede ver:\n");
archivo = fopen("E:\Registros de Facturacion.txt", "rb");
cantidad = 0;
while (fread(®istros[cantidad], sizeof(registros[cantidad]), 1, archivo) == 1) {
cantidad++;
}
fclose(archivo);
consultas();
}
MOD: Etiquetas de Código GeSHi insertadas