Dudas de Programacion » Lenguajes de Proposito General » C++

MANEJO DE ARCHIVOS EN C

(25 posts)
  • Started 1 year ago by jeremias10
  • Latest reply from jeremias10
  1. HOLA: alguien me podria dar algunos ejemplos como manejar archivos en c++, y temas para leer, y aprender a programar c++.

    espero respuestas gracias

    Posted 1 year ago #


  2. fiurer87
    Member

    Hola, ahora te doy un para de pasos a seguir para usar ficheros en C++, (yo uso el g++, que es el compilador para c++ en linux, espero en win no se un problema).
    Pasos para usar archivos:
    - Declarar Puntero Fichero. FILE *punteroFichero;
    - Apertura de archivo. punteroFichero=fopen(NombreArchivo,tipoAcceso);
    - escribir o leer contenido de archivo. fputs(Cadena,punteroFichero); fgets(cadena.nCaracteres,punteroFichero)
    - cerrar archivo. fclose(punteroFichero).

    Y bueno a continuacion te muestro un ejemplito :)

    Posted 1 year ago #
  3. fiurer87
    Member

    leer.cpp programa que lee el contenido del archivo "unArchivo"
    ============================
    #include <stdio.h>

    FILE *archi, *fopen();

    int main(){
    char cadena[80];
    archi=fopen("unArchivo","r"); //en modo lectura r
    if(archi == NULL) printf("Archivo no encontrado");
    fgets(cadena,60,archi);
    do{
    printf("%s\n",cadena);
    }while(fgets(cadena,80,archi)!=NULL);

    fclose(archi);
    return 0;
    }

    Posted 1 year ago #
  4. fiurer87
    Member

    Este ejemplo escribe en el archivo un nuevo texto
    escribir.cpp
    ============================================
    #include <stdio.h>
    FILE *archi, *fopen();

    int main(){
    char cadena[] = "\nNuevo texto dentro de archivo\n";
    archi = fopen("unArchivo","a");
    if(archi==NULL){
    printf("No existe archivo o no se creo");
    } else{
    fputs(cadena,archi);//insertar texto
    fclose(archi);
    }
    return 0;
    }
    ============================================

    Posted 1 year ago #


  5. fiurer87
    Member

    Recomendacion de bibliografia:
    Como programar en C/C++, deitel&deitel.

    bueno, espero te sirva.
    Hasta la proxima

    Atte: Luis Roberto

    Posted 1 year ago #
  6. mira yo tengo unos ejemplos de ficheros, pero este a la ora de q revise los datos para ver como estan guardados en mi disco duro, si le escribo para q lo guarde en block de ntas, me da un monton de signos y no me da lo q yo escribo,igual si le escribo en un documento de word, xq sera.

    talves xq yo utilizo otro metodo para ficheros, te dejo mi correo y espero q me ayudes o q alguien me ayude a solucionar este errror

    chiriatomo@hotmail.com

    Posted 1 year ago #
  7. fiurer87
    Member

    Quiza la codificacion que utilizas no es la correcta en tu sistema operativo y tu compilador, no estoy muy seguro de lo que pueda pasar.

    Verifica si tu compilador es UTF8 y lo mismo tu sistema operativo. O que ambos sean Unicode, es un error poco comun que se puede dar.

    Errores en Bloc de Notas (Bloc de notas usa Unicode por defecto) quiza tu compilador esta en otra codificacion (muy raro).

    No hay errore en word, es normal por que Microsoft Word elige la mejor codificacion posible para abrir un archivo, tiene varias los famosos UTF, Unicode, Latin, etc. Es por eso que lo lee perfectamente.

    Posted 1 year ago #


  8. fiurer87
    Member

    Otro problema podria ser el siguiente:

    Tu sistema operativo es de 64 bits pero tu compilador es para 32 bits.

    Posted 1 year ago #
  9. TE DOY UN EJEMPLO Y MIRAS CUAL ES MI PROBLEMA, SALE, Y MA AVISAS A MI CORREO COMO CUATES Y COLEGAS EN PROGRAMACION
    YO USO BORLANC C++ 3.1 Y USO EL WINDOWS 7, TALVES LA LIBRERIA O EL COMDANO DE FICHERO NO ES EL CORRECTO,ESPERO UNA RESPUESTA YA Q EL CODIGO Q TE MANDO ES UN PROYECTO,
    TAMBIEN ME GUSTARIA SABER COMO IMPRIMIR EN UNA IMPRESORA CANON IP1800 EN C++
    TE AGRADEZCO TU AYUDA Y M GUSTARIA Q ME ECHARAS LA MANO CON ESTO:
    MI CORREO ES chiriatomo@hotmail.com
    que DIOS los Bendiga

    ESTE ES MI CODIGO:

    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>

    // Estructura para paciente
    struct pacienteClinica {
    int codigoPaciente;
    char nombre[50];
    char direccion[255];
    char sexo;
    int edad;
    char telefono[8];
    char ocupacion[25];
    char estadoCivil;
    char razonVisita[255];
    };

    // Estructura para doctor
    struct doctorClinica {
    int codigoDoctor;
    char nombre[50];
    char direccion[255];
    char sexo;
    int edad;
    char especialidad[25];
    };

    // Estructura estado del paciente
    struct estadoPaciente {
    int codigoConsulta;
    int codigoPaciente;
    int codigoDoctor;
    char horaIngreso[6];
    char horaEgreso[6];
    char status; // E-> dado de alta, I-> dado de ingreso
    float precioConsulta;
    char tipoConsulta[25];
    };

    // prototipos de funciones
    void menuPrincipal();
    void menuPacientes();
    void menuDoctores();
    void menuDiagnosticos();

    void nuevoPaciente();
    void verPacientes();
    void editarPaciente();
    void eliminarPaciente();

    void nuevoDoctor();
    void verDoctores();
    void editarDoctor();
    void eliminarDoctor();

    void nuevoDiagnostico();
    void editarDiagnostico();
    void eliminarDiagnostico();
    void verDiagnostico();

    void imprimirDatos();

    //Funion principal
    int main() {
    int opcion;
    int salir = 0;

    while (salir != 1)
    { // while mientras salir sea 0

    menuPrincipal();

    scanf("%d", &opcion);

    switch(opcion) { //segun la opcion seleccionada entra al case 0-4
    case 0:
    salir = 1; // opcion salir del menu
    break;

    case 1:
    clrscr();
    menuPacientes(); //opcion pacientes

    break;
    case 2:
    clrscr();
    menuDoctores(); //opcion doctores
    break;

    case 3:
    clrscr();
    menuDiagnosticos(); //opcion diagnosticos
    break;

    case 4:
    clrscr();
    imprimirDatos();//opcion imprimir datos
    break;
    } // fin del switch de opcion de menu principal

    }// fin del while para salir

    printf("\n\n");

    return 0;
    }

    //Menu principal
    void menuPrincipal() {

    printf("\n Policlinica Asistencial.\n\n");
    printf("\n ***** LA ESPERANZA *****\n\n");

    printf(" Selecciona la opciona realizar:\n\n");
    printf(" 1- Seccion Pacientes.\n");
    printf(" 2- Seccion Doctores.\n");
    printf(" 3- Seccion Diagnostico del Paciente.\n");
    printf(" 4- Imprimir.\n");
    printf(" 0- Salir.\n\n");
    printf(" Opcion: ");
    }

    //Menu pacientes
    void menuPacientes(){

    int exit = 0;
    int opc;

    while (exit != 1) {

    printf("\nMenu Pacientes.\n\n");
    printf("Selecciona la opciona realizar:\n");
    printf("1- Nuevo Paciente.\n");
    printf("2- Editar Paciente.\n");
    printf("3- Eliminar Paciente.\n");
    printf("4- Ver Pacientes.\n");
    printf("0- Salir.\n\n");
    printf("Opcion: ");

    scanf("%d", &opc);

    switch(opc) {
    case 0:
    clrscr();
    exit = 1;
    break;

    case 1:
    clrscr();
    nuevoPaciente();
    break;

    case 2:
    clrscr();
    editarPaciente();
    break;

    case 3:
    clrscr();
    eliminarPaciente();
    break;

    case 4:
    clrscr();
    verPacientes();
    break;
    }
    }
    }

    //Menu doctores
    void menuDoctores(){

    int exit = 0;
    int opc;

    while (exit != 1) {

    printf("\nMenu Doctores.\n\n");
    printf("Selecciona la opciona realizar:\n");
    printf("1- Nuevo Doctor.\n");
    printf("2- Editar Doctor.\n");
    printf("3- Eliminar Doctor.\n");
    printf("4- Ver Doctores.\n");
    printf("0- Salir.\n\n");
    printf("Opcion: ");

    scanf("%d", &opc);

    switch(opc) {
    case 0:
    clrscr();
    exit = 1;
    break;

    case 1:
    clrscr();
    nuevoDoctor();
    break;

    case 2:
    clrscr();
    editarDoctor();
    break;

    case 3:
    clrscr();
    eliminarDoctor();
    break;

    case 4:
    clrscr();
    verDoctores();
    break;
    }
    }
    }

    //Menu diagnostico

    void menuDiagnosticos(){

    int exit = 0;
    int opc;

    while (exit != 1) {

    printf("\nMenu Diagnosticos.\n\n");
    printf("Selecciona la opciona realizar:\n");
    printf("1- Nuevo Diagnostico.\n");
    printf("2- Editar Diagnostico.\n");
    printf("3- Eliminar Diagnostico.\n");
    printf("4- Ver Diagnostico.\n");
    printf("0- Salir.\n\n");
    printf("Opcion: ");

    scanf("%d", &opc);

    switch(opc) {
    case 0:
    clrscr();
    exit = 1;
    break;

    case 1:
    clrscr();
    nuevoDiagnostico();
    break;

    case 2:
    clrscr();
    editarDiagnostico();
    break;

    case 3:
    clrscr();
    eliminarDiagnostico();
    break;

    case 4:
    clrscr();
    verDiagnostico();
    break;
    }
    }
    }

    //agregar nuevo paciente

    void nuevoPaciente() {

    struct pacienteClinica paciente;
    FILE *fichero;

    printf("Datos del Nuevo Paciente.\n\n");

    printf("Ingrese el codigo del paciente: ");
    scanf("%d", &paciente.codigoPaciente);

    fflush(stdin);
    printf("\nIngrese el nombre del paciente: ");
    gets(paciente.nombre);

    fflush(stdin);
    printf("\nIngrese la direccion del paciente: ");
    gets(paciente.direccion);

    printf("\nIngrese el sexo del paciente (M-F): ");
    scanf("%c", &paciente.sexo);

    printf("\nIngrese la edad del paciente: ");
    scanf("%d", &paciente.edad);

    fflush(stdin);
    printf("\nIngrese el telefono del paciente: ");
    gets(paciente.telefono);

    fflush(stdin);
    printf("\nIngrese la ocupacion del paciente: ");
    gets(paciente.ocupacion);

    printf("\nIngrese el estado civil del paciente (S-A-C-V): ");
    scanf("%c", &paciente.estadoCivil);

    fflush(stdin);
    printf("\nIngrese la razon de visita del paciente: ");
    gets(paciente.razonVisita);

    if ((fichero = fopen("pacientes.docx", "ab")) == NULL) {
    printf ("Error en apertura del fichero para escritura\n");
    }
    else {
    //guardamos los datos en el fichero
    fwrite(&paciente, sizeof(paciente), 1, fichero);
    printf("\nPaciente agreado.");
    fclose (fichero);
    }

    printf("\n\n");

    }

    //agregar nuevo doctor
    void nuevoDoctor() {

    struct doctorClinica doctor;
    FILE *fichero;

    printf("Datos del Nuevo Doctor.\n\n");

    printf("Ingrese el codigo del doctor: ");
    scanf("%d", &doctor.codigoDoctor);

    fflush(stdin);
    printf("\nIngrese el nombre del doctor: ");
    gets(doctor.nombre);

    fflush(stdin);
    printf("\nIngrese la direccion del doctor: ");
    gets(doctor.direccion);

    printf("\nIngrese el sexo del doctor (M-F): ");
    scanf("%c", &doctor.sexo);

    printf("\nIngrese la edad del doctor: ");
    scanf("%d", &doctor.edad);

    fflush(stdin);
    printf("\nIngrese la especilidad del doctor: ");
    gets(doctor.especialidad);

    if ((fichero = fopen("doctores.docx", "ab")) == NULL) {
    printf ("Error en apertura del fichero para escritura\n");
    }
    else {
    fwrite(&doctor, sizeof(doctor), 1, fichero);
    printf("\nDoctor agreado.");
    fclose (fichero);
    }

    printf("\n\n");

    }

    //ver pacientes todos
    void verPacientes() {

    struct pacienteClinica paciente;
    FILE *fichero;

    if ((fichero = fopen("pacientes.docx", "rb")) == NULL) {
    printf ( "No existen pacientes.\n " );

    }
    else {
    fread (&paciente, sizeof(paciente), 1, fichero);
    while (!feof(fichero)) {
    printf("\nCodigo del paciente: %d", paciente.codigoPaciente);
    printf("\nNombre del paciente: %s", paciente.nombre);
    printf("\nDireccion del paciente: %s", paciente.direccion);
    printf("\nSexo del paciente: %c", paciente.sexo);
    printf("\nEdad del paciente: %d", paciente.edad);
    printf("\nTelefono del paciente: %s", paciente.telefono);
    printf("\nOcupacion del paciente: %s", paciente.ocupacion);
    printf("\nEstado civil del paciente: %c", paciente.estadoCivil);
    printf("\nRazon de visita del paciente: %s \n\n", paciente.razonVisita);

    fread (&paciente, sizeof(paciente), 1, fichero);

    }
    fclose (fichero);
    }
    }

    //ver doctores todos
    void verDoctores() {

    struct doctorClinica doctor;
    FILE *fichero;

    if ((fichero = fopen("doctores.docx", "rb")) == NULL) {
    printf ( "No existen doctores.\n " );

    }
    else {
    fread (&doctor, sizeof(doctor), 1, fichero);
    while (!feof(fichero)) {
    printf("\nCodigo del doctor: %d", doctor.codigoDoctor);
    printf("\nNombre del doctor: %s", doctor.nombre);
    printf("\nDireccion del doctor: %s", doctor.direccion);
    printf("\nSexo del doctor: %c", doctor.sexo);
    printf("\nEdad del doctor: %d", doctor.edad);
    printf("\nEspecialidad del doctor: %s \n\n", doctor.especialidad);

    fread (&doctor, sizeof(doctor), 1, fichero);

    }
    fclose (fichero);
    }
    }

    //editar un paciente
    void editarPaciente(){

    int codigoBuscado;
    int encontrado = 0;
    struct pacienteClinica paciente;
    struct pacienteClinica newpaci;
    FILE *fichero;
    FILE *ficherox;

    printf("Modificacion de Datos del Paciente.\n\n");

    printf("Ingrese el codigo del paciente a modificar: ");
    scanf("%d", &codigoBuscado);

    if ((fichero = fopen("pacientes.docx", "rb")) == NULL) {
    printf ( "No existen pacientes.\n " );

    }
    else {
    fread (&paciente, sizeof(paciente), 1, fichero);
    while (!feof(fichero) && (encontrado != 1)) {
    if (codigoBuscado == paciente.codigoPaciente)
    encontrado = 1;
    fread (&paciente, sizeof(paciente), 1, fichero);
    }
    }

    fclose (fichero);

    if (encontrado == 1) {

    newpaci.codigoPaciente = codigoBuscado;

    fflush(stdin);
    printf("\nIngrese el nombre del paciente: ");
    gets(newpaci.nombre);

    fflush(stdin);
    printf("\nIngrese la direccion del paciente: ");
    gets(newpaci.direccion);

    printf("\nIngrese el sexo del paciente (M-F): ");
    scanf("%c", &newpaci.sexo);

    printf("\nIngrese la edad del paciente: ");
    scanf("%d", &newpaci.edad);

    fflush(stdin);
    printf("\nIngrese el telefono del paciente: ");
    gets(newpaci.telefono);

    fflush(stdin);
    printf("\nIngrese la ocupacion del paciente: ");
    gets(newpaci.ocupacion);

    printf("\nIngrese el estado civil del paciente (S-A-C-V): ");
    scanf("%c", &newpaci.estadoCivil);

    fflush(stdin);
    printf("\nIngrese la razon de visita del paciente: ");
    gets(newpaci.razonVisita);

    if ((fichero = fopen ("pacientes.docx", "rb")) == NULL)
    printf ("\nERROR: No es posible abrir el fichero de entrada.\n");
    else
    if ((ficherox = fopen ("pacientesx.docx", "wb")) == NULL)
    printf ("\nERROR: No es posible abrir el fichero de salida.\n");
    else
    {
    fread (&paciente, sizeof(paciente), 1, fichero);
    while (!feof(fichero)) {
    if (newpaci.codigoPaciente == paciente.codigoPaciente)
    fwrite(&newpaci, sizeof(paciente), 1, ficherox);
    else
    fwrite(&paciente, sizeof(paciente), 1, ficherox);
    fread (&paciente, sizeof(paciente), 1, fichero);
    }
    fclose (fichero);
    fclose (ficherox);
    remove("pacientes.docx");
    rename("pacientesx.docx", "pacientes.docx");
    }
    } // fin de if encontrado
    else {
    printf("Paciente no Encontrado");
    }
    printf("\n\n");

    }

    //editar un doctor
    void editarDoctor() {

    int codigoBuscado;
    int encontrado = 0;
    struct doctorClinica doctor;
    struct doctorClinica newdoc;
    FILE *fichero;
    FILE *ficherox;

    printf("Modificacion de Datos del Doctor.\n\n");

    printf("Ingrese el codigo del doctor a modificar: ");
    scanf("%d", &codigoBuscado);

    if ((fichero = fopen("doctores.docx", "rb")) == NULL) {
    printf ( "No existen doctores.\n " );

    }
    else {
    fread (&doctor, sizeof(doctor), 1, fichero);
    while (!feof(fichero) && (encontrado != 1)) {
    if (codigoBuscado == doctor.codigoDoctor)
    encontrado = 1;
    fread (&doctor, sizeof(doctor), 1, fichero);
    }
    }

    fclose (fichero);

    if (encontrado == 1) {

    newdoc.codigoDoctor = codigoBuscado;

    fflush(stdin);
    printf("\nIngrese el nombre del doctor: ");
    gets(newdoc.nombre);

    fflush(stdin);
    printf("\nIngrese la direccion del doctor: ");
    gets(newdoc.direccion);

    printf("\nIngrese el sexo del doctor (M-F): ");
    scanf("%c", &newdoc.sexo);

    printf("\nIngrese la edad del doctor: ");
    scanf("%d", &newdoc.edad);

    fflush(stdin);
    printf("\nIngrese la especialidad del doctor: ");
    gets(newdoc.especialidad);

    if ((fichero = fopen ("doctores.docx", "rb")) == NULL)
    printf ("\nERROR: No es posible abrir el fichero de entrada.\n");
    else
    if ((ficherox = fopen ("doctoresx.docx", "wb")) == NULL)
    printf ("\nERROR: No es posible abrir el fichero de salida.\n");
    else
    {
    fread (&doctor, sizeof(doctor), 1, fichero);
    while (!feof(fichero)) {
    if (newdoc.codigoDoctor == doctor.codigoDoctor)
    fwrite(&newdoc, sizeof(doctor), 1, ficherox);
    else
    fwrite(&doctor, sizeof(doctor), 1, ficherox);
    fread (&doctor, sizeof(doctor), 1, fichero);
    }
    fclose (fichero);
    fclose (ficherox);
    remove("doctores.docx");
    rename("doctoresx.docx", "doctores.docx");
    }
    } // fin de if encontrado
    else {
    printf("Doctor no Encontrado");
    }
    printf("\n\n");

    }

    //eliminar un paciente
    void eliminarPaciente(){

    int codigoBuscado;
    int encontrado = 0;
    struct pacienteClinica paciente;
    FILE *fichero;
    FILE *ficherox;

    printf("Eliminacion de Datos del Paciente.\n\n");

    printf("Ingrese el codigo del paciente a eliminar: ");
    scanf("%d", &codigoBuscado);

    if ((fichero = fopen("pacientes.docx", "rb")) == NULL) {
    printf ( "No existen pacientes.\n " );

    }
    else {
    fread (&paciente, sizeof(paciente), 1, fichero);
    while (!feof(fichero) && (encontrado != 1)) {
    if (codigoBuscado == paciente.codigoPaciente)
    encontrado = 1;
    fread (&paciente, sizeof(paciente), 1, fichero);
    }
    }

    fclose (fichero);

    if (encontrado == 1) {

    if ((fichero = fopen ("pacientes.docx", "rb")) == NULL)
    printf ("\nERROR: No es posible abrir el fichero de entrada.\n");
    else
    if ((ficherox = fopen ("pacientesx.docx", "wb")) == NULL)
    printf ("\nERROR: No es posible abrir el fichero de salida.\n");
    else
    {
    fread (&paciente, sizeof(paciente), 1, fichero);
    while (!feof(fichero)) {
    if (!(codigoBuscado == paciente.codigoPaciente))
    fwrite(&paciente, sizeof(paciente), 1, ficherox);
    fread (&paciente, sizeof(paciente), 1, fichero);
    }
    fclose (fichero);
    fclose (ficherox);
    remove("pacientes.docx");
    rename("pacientesx.docx", "pacientes.docx");
    printf("Paciente eliminado");
    }
    }
    else {
    printf("Paciente no Encontrado");
    }
    printf("\n\n");

    }

    //eliminar un doctor
    void eliminarDoctor(){

    int codigoBuscado;
    int encontrado = 0;
    struct doctorClinica doctor;
    FILE *fichero;
    FILE *ficherox;

    printf("Eliminar Datos del Doctor.\n\n");

    printf("Ingrese el codigo del doctor a eliminar: ");
    scanf("%d", &codigoBuscado);

    if ((fichero = fopen("doctores.docx", "rb")) == NULL) {
    printf ( "No existen doctores.\n " );

    }
    else {
    fread (&doctor, sizeof(doctor), 1, fichero);
    while (!feof(fichero) && (encontrado != 1)) {
    if (codigoBuscado == doctor.codigoDoctor)
    encontrado = 1;
    fread (&doctor, sizeof(doctor), 1, fichero);
    }
    }

    fclose (fichero);

    if (encontrado == 1) {
    if ((fichero = fopen ("doctores.docx", "rb")) == NULL)
    printf ("\nERROR: No es posible abrir el fichero de entrada.\n");
    else
    if ((ficherox = fopen ("doctoresx.docx", "wb")) == NULL)
    printf ("\nERROR: No es posible abrir el fichero de salida.\n");
    else
    {
    fread (&doctor, sizeof(doctor), 1, fichero);
    while (!feof(fichero)) {
    if (!(codigoBuscado == doctor.codigoDoctor))
    fwrite(&doctor, sizeof(doctor), 1, ficherox);
    fread (&doctor, sizeof(doctor), 1, fichero);
    }
    fclose (fichero);
    fclose (ficherox);
    remove("doctores.docx");
    rename("doctoresx.docx", "doctores.docx");
    printf("Doctor eliminado");
    }
    } // fin de if encontrado
    else {
    printf("Doctor no Encontrado");
    }
    printf("\n\n");

    }

    //agregar un diagnostico
    void nuevoDiagnostico() {

    struct estadoPaciente estado;
    FILE *fichero;

    printf("Datos del Diagnistoco.\n\n");

    printf("\nIngrese el codigo de la consulta: ");
    scanf("%d", &estado.codigoConsulta);

    printf("\nIngrese el codigo del paciente: ");
    scanf("%d", &estado.codigoPaciente);

    printf("\nIngrese el codigo del doctor examinador: ");
    scanf("%d", &estado.codigoDoctor);

    fflush(stdin);
    printf("\nIngrese la hora de ingreso del paciente: ");
    gets(estado.horaIngreso);

    fflush(stdin);
    printf("\nIngrese la hora de egreso del paciente: ");
    gets(estado.horaEgreso);

    fflush(stdin);
    printf("\nIngrese el tipo de consulta del paciente: ");
    gets(estado.tipoConsulta);

    fflush(stdin);
    printf("\nIngrese el precio de la consulta: ");
    scanf("%f", &estado.precioConsulta);

    fflush(stdin);
    printf("\nIngrese el status del paciente (E-I): ");
    scanf("%c", &estado.status);

    if ((fichero = fopen("diagnostico.docx", "ab")) == NULL) {
    printf ("Error en apertura del fichero para escritura\n");
    }
    else {
    fwrite(&estado, sizeof(estado), 1, fichero);
    printf("\nDiagnostico agreado.");
    fclose (fichero);
    }

    printf("\n\n");

    }

    //editar un diagnostico
    void editarDiagnostico() {

    int codigoBuscado;
    int encontrado = 0;
    struct estadoPaciente estado;
    struct estadoPaciente newestado;
    FILE *fichero;
    FILE *ficherox;

    printf("Modificacion de Datos del Diagnostico.\n\n");

    printf("Ingrese el codigo del diagnostico a modificar: ");
    scanf("%d", &codigoBuscado);

    if ((fichero = fopen("diagnostico.docx", "rb")) == NULL) {
    printf ( "No existen diagnosticos.\n " );

    }
    else {
    fread (&estado, sizeof(estado), 1, fichero);
    while (!feof(fichero) && (encontrado != 1)) {
    if (codigoBuscado == estado.codigoConsulta)
    encontrado = 1;
    fread (&estado, sizeof(estado), 1, fichero);
    }
    }

    fclose (fichero);

    if (encontrado == 1) {

    newestado.codigoConsulta = codigoBuscado;

    printf("\nIngrese el codigo del paciente: ");
    scanf("%d", &newestado.codigoPaciente);

    printf("\nIngrese el codigo del doctor examinador: ");
    scanf("%d", &newestado.codigoDoctor);

    fflush(stdin);
    printf("\nIngrese la hora de ingreso del paciente: ");
    gets(newestado.horaIngreso);

    fflush(stdin);
    printf("\nIngrese la hora de egreso del paciente: ");
    gets(newestado.horaEgreso);

    fflush(stdin);
    printf("\nIngrese el tipo de consulta del paciente: ");
    gets(newestado.tipoConsulta);

    fflush(stdin);
    printf("\nIngrese el precio de la consulta: ");
    scanf("%f", &newestado.precioConsulta);

    fflush(stdin);
    printf("\nIngrese el status del paciente (E-I): ");
    scanf("%c", &newestado.status);

    if ((fichero = fopen ("diagnostico.docx", "rb")) == NULL)
    printf ("\nERROR: No es posible abrir el fichero de entrada.\n");
    else
    if ((ficherox = fopen ("diagnosticox.docx", "wb")) == NULL)
    printf ("\nERROR: No es posible abrir el fichero de salida.\n");
    else
    {
    fread (&estado, sizeof(estado), 1, fichero);
    while (!feof(fichero)) {
    if (newestado.codigoConsulta == estado.codigoConsulta)
    fwrite(&newestado, sizeof(estado), 1, ficherox);
    else
    fwrite(&estado, sizeof(estado), 1, ficherox);
    fread (&estado, sizeof(estado), 1, fichero);
    }
    fclose (fichero);
    fclose (ficherox);
    remove("diagnostico.docx");
    rename("diagnosticox.docx", "diagnostico.docx");
    }
    } // fin de if encontrado
    else {
    printf("Diagnostico no Encontrado");
    }
    printf("\n\n");

    }

    //eliminar un diagnostico
    void eliminarDiagnostico(){

    int codigoBuscado;
    int encontrado = 0;
    struct estadoPaciente estado;
    FILE *fichero;
    FILE *ficherox;

    printf("Eliminar Datos del Diagnostico.\n\n");

    printf("Ingrese el codigo del diagnostico a eliminar: ");
    scanf("%d", &codigoBuscado);

    if ((fichero = fopen("diagnostico.docx", "rb")) == NULL) {
    printf ( "No existen diagnosticos.\n " );

    }
    else {
    fread (&estado, sizeof(estado), 1, fichero);
    while (!feof(fichero) && (encontrado != 1)) {
    if (codigoBuscado == estado.codigoConsulta)
    encontrado = 1;
    fread (&estado, sizeof(estado), 1, fichero);
    }
    }

    fclose (fichero);

    if (encontrado == 1) {
    if ((fichero = fopen ("diagnostico.docx", "rb")) == NULL)
    printf ("\nERROR: No es posible abrir el fichero de entrada.\n");
    else
    if ((ficherox = fopen ("diagnosticox.docx", "wb")) == NULL)
    printf ("\nERROR: No es posible abrir el fichero de salida.\n");
    else
    {
    fread (&estado, sizeof(estado), 1, fichero);
    while (!feof(fichero)) {
    if (!(codigoBuscado == estado.codigoConsulta))
    fwrite(&estado, sizeof(estado), 1, ficherox);
    fread (&estado, sizeof(estado), 1, fichero);
    }
    fclose (fichero);
    fclose (ficherox);
    remove("diagnostico.docx");
    rename("diagnosticox.docx", "diagnostico.docx");
    printf("Diagnostico eliminado");
    }
    } // fin de if encontrado
    else {
    printf("Diagnostico no Encontrado");
    }
    printf("\n\n");

    }

    //ver todos los diagnosticos
    void verDiagnostico() {

    struct estadoPaciente estado;
    FILE *fichero;

    if ((fichero = fopen("diagnostico.docx", "rb")) == NULL) {
    printf ( "No existen diagnosticos.\n " );

    }
    else {
    fread (&estado, sizeof(estado), 1, fichero);
    while (!feof(fichero)) {
    printf("\nCodigo del diagnostico: %d", estado.codigoConsulta);
    printf("\nCodigo del paciente: %d", estado.codigoPaciente);
    printf("\nCodigo del doctor: %d", estado.codigoDoctor);
    printf("\nTipo de consulta: %s", estado.tipoConsulta);
    printf("\nPrecio de consulta: %.2f", estado.precioConsulta);
    printf("\nEstatus de la consulta: %c", estado.status);
    printf("\nHora de ingreso: %s", estado.horaIngreso);
    printf("\nHora de egreso: %s\n\n", estado.horaEgreso);

    fread (&estado, sizeof(estado), 1, fichero);

    }
    fclose (fichero);
    }
    }

    //imprimir datos
    void imprimirDatos() {

    int codigoBuscado;
    int encontrado = 0;
    struct estadoPaciente estado;
    FILE *fichero;

    printf("Impresion de Datos del Diagnostico del Paciente.\n\n");

    printf("Ingrese el codigo del diagnostico a imprimir: ");
    scanf("%d", &codigoBuscado);

    if ((fichero = fopen("diagnostico.docx", "rb")) == NULL) {
    printf ( "No existen diagnosticos.\n " );

    }
    else {
    fread (&estado, sizeof(estado), 1, fichero);
    while (!feof(fichero) && (encontrado != 1)) {
    if (codigoBuscado == estado.codigoConsulta)
    encontrado = 1;
    fread (&estado, sizeof(estado), 1, fichero);
    }
    }

    fclose (fichero);

    if (encontrado == 1) {

    if ((fichero = fopen ("diagnostico.docx", "rb")) == NULL)
    printf ("\nERROR: No es posible abrir el fichero de entrada.\n");
    else
    {
    fread (&estado, sizeof(estado), 1, fichero);
    while (!feof(fichero)) {
    if (estado.codigoConsulta == codigoBuscado){
    printf("\nCodigo del diagnostico: %d", estado.codigoConsulta);
    printf("\nCodigo del paciente: %d", estado.codigoPaciente);
    printf("\nCodigo del doctor: %d", estado.codigoDoctor);
    printf("\nTipo de consulta: %s", estado.tipoConsulta);
    printf("\nPrecio de consulta: %.2f", estado.precioConsulta);
    printf("\nEstatus de la consulta: %c", estado.status);
    printf("\nHora de ingreso: %s", estado.horaIngreso);
    printf("\nHora de egreso: %s\n\n", estado.horaEgreso);
    //----------------------------------------------
    // ACA IMPRIMIMOS LOS DATOS DE ARRIBA A PAPEL
    // SOLO QUE NO SABEMOS COMO?
    //----------------------------------------------
    }
    fread (&estado, sizeof(estado), 1, fichero);
    }
    fclose (fichero);
    }
    } // fin de if encontrado
    else {
    printf("Diagnostico no Encontrado");
    }
    printf("\n\n");

    }

    Posted 1 year ago #
  10. fiurer87
    Member

    Sinceramente jamas me habia dado la curiosidad de utilizar puertos USB para el manejo de impresora con C++, la unica experiencia que tengo es usando los puertos paralelos, con impresoras "pasaditas de moda" que usan los puertos LPTx (x = 1,2,..).

    Quiza deberias investigar si se puede utilizar puertos USB desde C++.

    Mientras te dejo un codigo sencillo de como imprimir con una impresora(antigua con puerto paralelo) conectada al puerto LPT1 que equivale a 0.
    El metodo que usare es el biosprint(int orden, int byte, int puerto)
    orden: 0,1,2 (0 imprimer caracter, 1 inicia puerto impresora, 2 estado del puerto).

    Codigo ejemplo:
    ==================================
    #include <bios.h>

    int main(){
    char cad[] = "Hola Impresora :)";
    while(*cad)
    biosprint(0,*cad++,0); //aqui se imprime
    return 0;
    }

    ======================
    asi que si no tienes una impresora con puerto paralelo, te sugiero comiences la investigacion sobre USB.

    Saludos

    Posted 1 year ago #
  11. gracias por tu sugerencia voy a ver si consigo una, y donde pondria o donde debo de poner el ejemplo q me diste de como imprimir, en el programa anterior,

    y dime donde tengo el error de fichero donde me da errores a la ora q consulto en mi disco duro, y xq me salen muchos signos, a la ora de revisar mis datos o mi base de datos en mi disco, le coloque los siguientes: ".txt" =block denotas, ".docx"=documento de word y ".dat"=me da en un archivo de audio elcual no abre,

    explicame si tengo algun error a la ora de uzar las librerias o el codigo

    espero gracias

    Posted 1 year ago #
  12. fiurer87
    Member

    Aclaracion sobre bios.h >> es una herramienta que viene el Borland C++, es el use para probar en windows, asi que no funcionara si usas otros C (debilidades por estar en Windows).

    Sobre .dat , es importante que dat es un archivo binario que normalmente es usado por el stream de c/c++ y tb por otros, no te preocupes si es que no puedes abrir desde tu windows, la aplicabilidad debe ser vista dentro de tu aplicacion de C++.
    Usa mi ejemplo de escribir y en vez de "unArchivo" pon otro nombre como ser: "algo.dat" y despues usa el ejemplo de leer y lees el "algo.dat", veras que tu aplicacion no tiene ningun tipo de problemas al leer el .dat.

    Acerca de txt: Puede ser aceptado pero no es conveniente.

    Acerca de .docx: No lo uses por nada del mundo ya que es una archivo compreso tipo .zip .rar y espera un flujo de bits mas estrecho asi que no te servira para nada.

    Posted 1 year ago #
  13. fiurer87
    Member

    Suponiendo que tienes borland C++ bajo windows, hare una modificacion al programa de leer ficheros para que en ves de leer, lo imprima. En este caso imprimira el archivo "algo.dat".
    ================================================
    //Codigo Modificado, leerEimprimir.cpp

    #include <stdio.h>
    #include <bios.h>

    FILE *archi, *fopen();

    int main(){
    char cadena[80];
    archi=fopen("algo.dat","r");
    if(archi == NULL)
    printf("Archivo no encontrado");
    fgets(cadena,60,archi);
    do{
    while(*cadena)
    biosprint(0,*cadena++,0);
    }while(fgets(cadena,80,archi)!=NULL);

    fclose(archi);
    return 0;
    }

    Posted 1 year ago #
  14. fiurer87
    Member

    Solucion extrema:

    Me olvide mencionarte que puedes adaptar tu USB a puerto paralelo LPT a nivel de hardware, quiza sea la solucion mas operativa.

    Mira esta pagina, aqui puedes ver el Puente USB-LPT

    http://www.epapersign.com/LPT-to-USB/parallel-to-usb-connector/

    Toma en cuenta que el equipo donde piensas instalar tu software debe como requisito tener un puerto LPT como minimo.

    Posted 1 year ago #
  15. mira yo sigo con eso de q me tira un monton de signos este programa a la hora q yo quiera ver lo q escribi en mi programa en c++, el cual si yo voy y abro mi disco duro m busco en donde apunte ese archivo, si lo tengo e .txt me tira un nonton de signo y no me tira lo q real mente yo escribi,
    yo pienso q q aca tengo el error,
    ///,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

    if ((fichero = fopen("pacientes.docx", "ab")) == NULL) {
    printf ("Error en apertura del fichero para escritura\n");
    }
    else {
    //guardamos los datos en el fichero
    fwrite(&paciente, sizeof(paciente), 1, fichero);
    printf("\nPaciente agreado.");
    fclose (fichero);
    }
    //::::::::::::::::::::::::::::::::::::::::::::::::::::::

    si corren el codigo de arriba el codigo grande se daran cuenta de q me da un monton de signos q nada q ver con lo q escribe en el programa en c++, no se si me don a entender, no se si utds tienen c++ ahorita para q lo prueben, necesito q me ayuden con eso, es q no ayo como arreglarlo, gracias por sus ayuda

    Posted 1 year ago #

Reply »

You must log in to post.

935 posts in 394 topics over 36 months by 349 of 787 members. Latest: Balkirium, redundantlogic2, shianim

Acerca de...

Dudas de Programación es una Web, dentro del proyecto aulambra.com que nace con la idea de propocionar un foro de consultas sobre diferentes temas de programación. Orientado a ayudar a los internautas hispano-hablantes en Internet.

Ir al Blog de Linea de Código

Otras Webs