|
Mostrar Mensajes
|
Páginas: 1 [2]
|
11
|
Programación / Programación C/C++ / Re: [?] leer binario y guardar en struct dato AYUDA
|
en: 12 Octubre 2011, 18:43 pm
|
Compañeros, tengo otra duda, supongamos que yo uso "fread(&aux,sizeof(struct dato),1,archivo);"
y quiero que imprima lo que queda guardado en cierto campo de "aux" si y solo si, ese campo no esta vacio... como lo hago? probe usando: "if(aux.antonimo!=NULL){" "if(aux.antonimo!=""){" "if(aux.antonimo!="\0"){" "if(aux.antonimo!=" "){"
Y ninguna de esas maneras me funciono... alguna sugerencia
recuerden que estoy leyendo desde un binario, lo guardo en struct dato aux y despues lo controlo de ahi
GRACIAS
|
|
|
12
|
Programación / Programación C/C++ / Re: [?] leer binario y guardar en struct dato AYUDA
|
en: 11 Octubre 2011, 19:30 pm
|
YA ENCONTRE EL ERROR, ESTABA EN EL SUB MENU DONDE SE LLAMABA A LA FUNCION... ACA SE LOS DEJO void subMenu(){ clrscr(); int opc; char salir='n'; archivo =fopen(DICCIONARIO ,"rb"); if(archivo){ printf("\n Listar Palabras existentes \n"); printf("\n1) Listar antonimos"); printf("\n2) Listar paronimos"); printf("\n3) Listar: sinonimos, antonimos y paronimos"); printf("\n0) Volver al menu principal\n"); clrscr(); //EL ERROR ES TODO ESTO QUE ESTA while(salir!='s'){ //AFUERA DEL WHILE, EL GETCH ESTA AFUERA switch(opc){ //ENTONCES EL WHILE NO PARA PARA PEDIR SI QUIERES SALIR case '1': //listarAnt(); break; case '2': //listarPar(); break; case '3': //listarTodo(); break; case '0': salir='s'; break; default:printf("\n OPCION INCORRECTA"); break; }//Fin switch submenu }//fin while }//fin if else{ printf("\n OCURRIO UN ERROR AL ABRIR EL ARCHIVO"); }//fin else }//fin subMenu
|
|
|
13
|
Programación / Programación C/C++ / Re: [?] leer binario y guardar en struct dato AYUDA
|
en: 11 Octubre 2011, 17:49 pm
|
. Hola, disculpa la joda, pero estas funciones me dan buclevoid listarAnt() { struct dato aux; FILE *archivo; memset(&aux, 0x00, sizeof(struct dato)); archivo = fopen(DICCIONARIO, "rb"); if(archivo) { while(!feof(archivo)) if(fread(&aux, sizeof(struct dato), 1, archivo)) printf("Palabra: %s \nAntonimo: \n\t%s", aux.palabra, aux.antonimo); fclose(archivo); } } void listarPar() { struct dato aux; FILE *archivo; memset(&aux, 0x00, sizeof(struct dato)); archivo = fopen(DICCIONARIO, "rb"); if(archivo) { while(!feof(archivo)) if(fread(&aux, sizeof(struct dato), 1, archivo)) printf("Palabra: %s \nParonimo: \n\t%s", aux.palabra, aux.paronimo); fclose(archivo); } }
|
|
|
16
|
Programación / Programación C/C++ / Re: [?] leer binario y guardar en struct dato AYUDA
|
en: 7 Octubre 2011, 21:21 pm
|
Bueno, tengo un par de preguntas para entender mejor el funcionamiento del programa, espero no ser pesado. ¿si yo en una función pongo "struct dato aux" la estructura aux va a tener todo lo mismo que la que declare arriba afuera del main? en el siguiente caso " if(ok)"¿cuando se cumple el if, cuando es 0 o cuando es otro valor distinto a 0 o cuando? ¿y en este caso "archivo = fopen(DICCIONARIO, "rb"); if(archivo)" cuando se cumple el if y cuando no? ¿que significa esto? while(!enc && !feof(archivo)) disculpen tantas preguntas es que nosotros nunca usamos una sintaxis asi en nuestro curso, imagino que asi es mejor, es ams rapido, mas corto, por eso me gustaria entenderlo y aprenderlo, se que vamos atrasados en el curso, pero alguna vez hay que empezar, ya llegara el dia que vamos a saber mas, yo y mis compañeros GRACIAS
|
|
|
17
|
Programación / Programación C/C++ / Re: [?] leer binario y guardar en struct dato AYUDA
|
en: 7 Octubre 2011, 02:07 am
|
Disculpa/disculpen las molestias pero quisiera saber como funciona "memset" ya que ese comando no nos lo enseñaron, por eso utilizo fread y fwrite, y no puedo usar un comando que no nos hayan enseñado a no ser que sepa como funciona y lo entienda, la idea aquí no es que yo copie esto, sino que lo utilice como una manera de aprender y ahora quisiera poder tomar esto que tu has escrito y hacerlo con los comandos que nos enseñaron en el instituto
|
|
|
19
|
Programación / Programación C/C++ / [?] leer binario y guardar en struct dato AYUDA
|
en: 6 Octubre 2011, 22:43 pm
|
tengo un codigo que hice de un diccionario, pero trao y trato y no me sale el tema de que el usuario ingrese una cadena y el programa la busque en el archivo y la almacene en el "struct dato"... les paso el codigo #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> void alta(int); /*void baja(); void modificar(); void consultar(); void listarSin(int); void listarAnt(); void listarPar();*/ void subMenu(); int total(); #define LARGO 100 #define DICCIONARIO "c:\dicc.bin" struct dato{ char palabra[20]; char sinonimo1[20],sinonimo2[20],sinonimo3[20]; char antonimo[20]; char paronimo[20]; int borrado; }diccionario[LARGO]; FILE *archivo = NULL; void main(){ int opcion=0,pos=total(); char salir='n'; while (salir!='s'){ clrscr(); printf("\n DICCIONARIO \n"); printf("1) Ingresar \n"); printf("2) Eliminar \n"); printf("3) Modificar \n"); printf("4) Consultar \n"); printf("5) Listar \n"); printf("0) Salir \n"); opcion=getch(); switch(opcion){ case '1': pos=total(); pos++; alta(pos); break; case '2': //baja(); break; case '3': //modificar(); break; case '4': //consultar(); break; case '5': subMenu(); break; case '0': printf("\n ¨Esta seguro que desea salir? (s/n)"); salir=getch(); clrscr(); break; default:printf("\n opcion incorrecta"); getch(); clrscr(); break; }//fin switch }//fin while }//fin void main void subMenu(){ clrscr(); int opc; char salir='n'; printf("\n Listar Palabras existentes \n"); printf("\n1) Listar sinonimos"); printf("\n2) Listar antonimos"); printf("\n3) Listar paronimos"); printf("\n4) Listar: sinonimos, antonimos y paronimos"); printf("\n0) Volver al menu principal"); opc=getch(); clrscr(); while(salir!='s'){ switch(opc){ case '1': //listarSin(); break; case '2': //listarAnt(); break; case '3': //listarPar(); break; case '4': //listarSin(); //listarAnt(); //listarPar(); break; case '0': printf("\n ¨Desea volver al menu principal (s/n)?"); salir=getch(); break; default:printf("\n OPCION INCORRECTA"); getch(); break; }//Fin switch submenu }//fin while }//fin subMenu int total(){ clrscr(); int total; archivo=NULL; archivo=fopen(DICCIONARIO,"rb");//abro el archivo diccionario.bin como solo lectura if(archivo==NULL){ printf("\n Error al abrir el archivo"); fclose(archivo); } else{ fseek(archivo,0,SEEK_END); total=ftell(archivo) / sizeof(struct dato);//divido el tama¤o del archivo entre el tama¤o de la estructura para saber cuantas hay } return total;//devuelvo el valor de la variable total(int) } void alta(int pos){ char opc=' ',confirmar=' '; archivo=NULL; clrscr(); printf("\n Ingresar palabra/s \n"); printf("\n Palabra: "); gets(diccionario[pos].palabra); clrscr(); printf("\n ¨Desea ingresar un sinonimo? (s/n)"); opc='a'; // while(opc!='s' || opc!='n'){ opc=getch(); if(opc=='s'){ clrscr(); printf("ingrese un sinonimo: "); gets(diccionario[pos].sinonimo1); opc=' '; clrscr(); printf("\n¨Desea ingresar otro sinonimo? (s/n)"); opc=getch(); if(opc=='s'){ clrscr(); printf("ingrese otro sinonimo: "); gets(diccionario[pos].sinonimo2); opc=' '; clrscr(); printf("\n¨Desea ingresar otro sinonimo? (s/n)"); opc=getch(); if(opc=='s'){ clrscr(); printf("ingrese otro sinonimo: "); gets(diccionario[pos].sinonimo3); }//if3 }//if2 }//if1 // }//while clrscr(); printf(" Ingrese un antonimo: "); gets(diccionario[pos].antonimo); printf("\n Ingrese un paronimo o presione enter para no ingresar nada: "); gets(diccionario[pos].paronimo); clrscr(); printf(" Usted ingreso\n"); printf("\n\n Palabra: %s \n Sinonimos: %s, %s, %s\n Antonimo: %s\n Paronimo: %s",diccionario[pos].palabra,diccionario[pos].sinonimo1,diccionario[pos].sinonimo2,diccionario[pos].sinonimo3,diccionario[pos].antonimo,diccionario[pos].paronimo); printf("\n\n Esta seguro que desea agregar estos datos al diccionario(s/n)"); confirmar=getch(); if(confirmar=='n'){ printf("\n Los datos no se escribieron en el archivo"); }//IF else{ if(confirmar=='s'){ archivo=fopen(DICCIONARIO,"ab+"); fwrite(&diccionario[pos],sizeof(struct dato),1,archivo); fclose(archivo); }//if }//else }//funcion
|
|
|
20
|
Programación / Programación C/C++ / [Ayuda]Diccionario de sinonimos, antonimos, paronimos en C
|
en: 5 Octubre 2011, 20:09 pm
|
Hola, soy nuevo en el foro, y necesito ayuda con un programa que me mandaron como proyecto para el instituto en el que tengo que crear un programa que guarde palabras, varios sinonimos, un solo antonimo y un solo paronimo... tiene que tener un menu que permita al usuario agregar palabras (altas) dar de baja palabras, modificar (por errores ortograficos), consultar una palabra, y listar todas. estoy trancado con el tema de los archivos binarios.. no tengo idea del tema porque falte a clase ya que estaba enfermo. les dejo lo que tengo hecho hasta ahora, hay funciones que las tengo con // porque aun no estan declaradas... me tira como 8 errores, a ver si me pueden auxiliar. MUCHAS GRACIAS ARREGLE EL CODIGO, PERO SI ME PUEDEN AYUDAR CON ALGUNA DE LAS FUNCIONES QUE ME FALTAN POR HACER LES AGRADEZCO#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> void alta(int); /*void baja(); void modificar(); void consultar(); void listarSin(int); void listarAnt(); void listarPar();*/ void subMenu(); int total(); #define LARGO 100 #define DICCIONARIO "c:\dicc.bin" struct dato{ char palabra[20]; char sinonimo1[20],sinonimo2[20],sinonimo3[20]; char antonimo[20]; char paronimo[20]; int borrado; }diccionario[LARGO]; FILE *archivo = NULL; void main(){ int opcion=0,pos=total(); char salir='n'; while (salir!='s'){ clrscr(); switch(opcion){ case '1': pos=total(); pos++; alta(pos); break; case '2': //baja(); break; case '3': //modificar(); break; case '4': //consultar(); break; case '5': subMenu(); break; case '0': printf("\n ¨Esta seguro que desea salir? (s/n)"); clrscr(); break; default:printf("\n opcion incorrecta"); clrscr(); break; }//fin switch }//fin while }//fin void main void subMenu(){ clrscr(); int opc; char salir='n'; printf("\n Listar Palabras existentes \n"); printf("\n1) Listar sinonimos"); printf("\n2) Listar antonimos"); printf("\n3) Listar paronimos"); printf("\n4) Listar: sinonimos, antonimos y paronimos"); printf("\n0) Volver al menu principal"); clrscr(); while(salir!='s'){ switch(opc){ case '1': //listarSin(); break; case '2': //listarAnt(); break; case '3': //listarPar(); break; case '4': //listarSin(); //listarAnt(); //listarPar(); break; case '0': printf("\n ¨Desea volver al menu principal (s/n)?"); break; default:printf("\n OPCION INCORRECTA"); break; }//Fin switch submenu }//fin while }//fin subMenu int total(){ clrscr(); int total; archivo=NULL; archivo =fopen(DICCIONARIO ,"rb");//abro el archivo diccionario.bin como solo lectura if(archivo==NULL){ printf("\n Error al abrir el archivo"); } else{ fseek(archivo ,0,SEEK_END ); total =ftell(archivo ) / sizeof(struct dato );//divido el tama¤o del archivo entre el tama¤o de la estructura para saber cuantas hay } return total;//devuelvo el valor de la variable total(int) } void alta(int pos){ char opc=' ',confirmar=' '; archivo=NULL; clrscr(); printf("\n Ingresar palabra/s \n"); gets(diccionario [pos ]. palabra); clrscr(); printf("\n ¨Desea ingresar un sinonimo? (s/n)"); opc='a'; // while(opc!='s' || opc!='n'){ if(opc=='s'){ clrscr(); printf("ingrese un sinonimo: "); gets(diccionario [pos ]. sinonimo1); opc=' '; clrscr(); printf("\n¨Desea ingresar otro sinonimo? (s/n)"); if(opc=='s'){ clrscr(); printf("ingrese otro sinonimo: "); gets(diccionario [pos ]. sinonimo2); opc=' '; clrscr(); printf("\n¨Desea ingresar otro sinonimo? (s/n)"); if(opc=='s'){ clrscr(); printf("ingrese otro sinonimo: "); gets(diccionario [pos ]. sinonimo3); }//if3 }//if2 }//if1 // }//while clrscr(); printf(" Ingrese un antonimo: "); gets(diccionario [pos ]. antonimo); printf("\n Ingrese un paronimo o presione enter para no ingresar nada: "); gets(diccionario [pos ]. paronimo); clrscr(); printf("\n\n Palabra: %s \n Sinonimos: %s, %s, %s\n Antonimo: %s\n Paronimo: %s",diccionario [pos ]. palabra,diccionario [pos ]. sinonimo1,diccionario [pos ]. sinonimo2,diccionario [pos ]. sinonimo3,diccionario [pos ]. antonimo,diccionario [pos ]. paronimo); printf("\n\n Esta seguro que desea agregar estos datos al diccionario(s/n)"); if(confirmar=='n'){ printf("\n Los datos no se escribieron en el archivo"); }//IF else{ if(confirmar=='s'){ archivo =fopen(DICCIONARIO ,"ab+"); fwrite(&diccionario [pos ],sizeof(struct dato ),1,archivo ); }//if }//else }//funcion
:?:
|
|
|
|
|
|
|