elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Ayuda] Ficheros en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Ayuda] Ficheros en C  (Leído 2,435 veces)
sora_ori

Desconectado Desconectado

Mensajes: 269



Ver Perfil
[Ayuda] Ficheros en C
« en: 7 Junio 2014, 12:40 pm »

Muy buenas a todos, estoy haciendo un programa en C que añade trabajadores, los guarda en un fichero, los muestras, los modifica etc.

Me funcionan muchas cosas pero otras no, consigo añadir datos en un fichero y guardarlos en un fichero, pero cuando voy a mostrar el fichero por pantalla no se me muestra nada.



A ver si alguien sería tan amable de ayudarme jejeje

Gracias!




« Última modificación: 12 Junio 2014, 21:13 pm por sora_ori » En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: [Ayuda] Ficheros en C
« Respuesta #1 en: 7 Junio 2014, 18:04 pm »

Con solo ese fragmento no es posible conocer donde se genera el error, hay que revisar todo el código fuente en particular las otras funciones que acceden al archivo (por ejemplo donde se crea y escribe en el).

En cuanto a la función "mostrarTreballadors" falta indicar el valor de retorno (si no piensas utilizarlo hay que cambiar este a void) y algunos detalles todos ellos menores.

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
sora_ori

Desconectado Desconectado

Mensajes: 269



Ver Perfil
Re: [Ayuda] Ficheros en C
« Respuesta #2 en: 7 Junio 2014, 18:33 pm »

Hola "rir3760" gracias por ayudar.


EDITO: Ya he podido listar el contenido de un fichero, aunque agrego más de 1 trabajador en el fichero y solo consigo mostrar 1 resultado. Dejo imagen:




Código actual:

« Última modificación: 12 Junio 2014, 21:13 pm por sora_ori » En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: [Ayuda] Ficheros en C
« Respuesta #3 en: 9 Junio 2014, 03:47 am »

Hay que realizar una cantidad importante de cambios al programa. Comentarios:

* No es necesario incluir los encabezados <windows.h> y "fcntl.h" en el programa, eliminalos.

* Se debe evitar el uso de fflush(stdin) y las funciones como getch parte de la biblioteca conio de Borland. Mas información en la pagina |Lo que no hay que hacer en C/C++. Nivel basico|.

* Evita macros como esta:
Código
  1. #define PRS(x) printf ("%s\n",x)
Ya que no facilitan la lectura del código fuente, en su lugar utiliza printf directamente.

* Salvo "nouTreballador" en todas las funciones falta el valor de retorno y ya que este no se utiliza deberías cambiar los prototipos indicando que el tipo de retorno es void.

* También debes indicar que las funciones (salvo una) no reciben argumentos mediante la palabra reservada void entre paréntesis:
Código
  1. int nouTreballador(void);
  2. int GravarDades(int num_regs);
  3. int mostrarTreballadors(void);
  4. int modificarDades(void);
  5. int ficheroLog(void);
No debes utilizar "()" ya que ello indica un numero no determinado de argumentos

* En la función main al pedir la opción:
Código
  1. printf("Escoge una opcion: ",opc);
  2. scanf("%d",&opc);
En la llamada a printf el segundo argumento "opc" y la coma antes de este están de mas, eliminalos.

* En la misma función las variables "continua", "i" y "dadesVector" no se utilizan, eliminalas.

* En la definición de la función "GravarDades" falta indicar el tipo del parámetro.

* El error que mencionas se genera (supongo ya que no puedo ejecutar tu programa) en la función "mostrarTreballadors", en ella tienes un error lógico (la falta de llaves para indicar el cuerpo del bucle):
Código
  1. int mostrarTreballadors(void)
  2. {
  3.   treballadors treb;
  4.   system("cls");
  5.   FILE *fp;
  6.  
  7.   if ((fp = fopen ("treballador.dat","rb")) == NULL){
  8.      puts("\nNo puc obrir l'arxiu clubs.dat");
  9.      system("pause");
  10.   }else {
  11.      /* bucle */
  12.      while (fread (&treb, mida, 1, fp) == 1)
  13.         printf("______________________________________________________________________________\n\n");
  14.      /* bucle */
  15.  
  16.      printf("TRABAJ.\tCLIENTE\t   DNI  \tANYO\tCATEGORIA\tSUELDO\n");
  17.      printf("______________________________________________________________________________\n");
  18.      printf("\n%s \t%s \t %i \t%i \t%s   \t%i ", treb.nomTreballador, treb.cognomClient, treb.dni, treb.any, reb.categoria, treb.sou);
  19.  
  20.      printf("\n_____________________________________________________________________________\n");
  21.      printf("\n\n\nEstos son todos los trabajadores leidos del fichero treballador.dat");
  22.      getch();
  23.      fclose(fp);
  24.   }
  25. }

* La variable "mida" la declaras en dos ocasiones una de forma "global" al inicio del programa y otra vez con el mismo valor en la función "modificarDades", hay que eliminar esta ultima.

* En la misma función no es necesario utilizar strlen para conocer si la cadena almacenada es una cadena vacía, en su lugar basta con verificar si el primer elemento de la cadena es '\0'.

* Algunos mas ...

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
sora_ori

Desconectado Desconectado

Mensajes: 269



Ver Perfil
Re: [Ayuda] Ficheros en C
« Respuesta #4 en: 10 Junio 2014, 14:21 pm »

Duda solucionada!
« Última modificación: 10 Junio 2014, 21:05 pm por sora_ori » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con ficheros PDF
Dudas Generales
coyote_cojo 4 3,509 Último mensaje 26 Febrero 2011, 06:58 am
por coyote_cojo
ayuda con ficheros
Programación C/C++
josue_tux 3 2,895 Último mensaje 3 Diciembre 2011, 01:36 am
por Deby93
ayuda con ficheros
Java
ped18 2 2,144 Último mensaje 5 Diciembre 2011, 11:26 am
por Proteus1989
Ayuda Con Ficheros .in En C
Programación C/C++
ZedGe 2 2,311 Último mensaje 28 Mayo 2012, 04:50 am
por ZedGe
iDStore lista ficheros y directorios ocultos de ficheros .DS_Store
Nivel Web
MichBukana 0 3,580 Último mensaje 29 Agosto 2013, 09:21 am
por MichBukana
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines