• Domingo 16 de Junio de 2024, 12:27

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - granzeta

Páginas: [1]
1
C/C++ / Re: Problema con fread()
« en: Sábado 25 de Junio de 2011, 00:43 »
Gracias, sus comentarios son de mucha ayuda cuando se esta aprendiendo a programar en C.

2
C/C++ / Re: Problema con fread()
« en: Miércoles 22 de Junio de 2011, 04:15 »
Muchas gracias profesorX, su explicación y conclusión es detallada y exacta respectivamente.
Realmente esta genial su explicación  :good: de gran ayuda.
Asi que PROBLEMA SOLUCIONADO.
Saludos   :rolleyes:

3
C/C++ / Problema con fread()
« en: Miércoles 22 de Junio de 2011, 01:14 »
Saludos al foro :)
haciendo mis practicas en C, he realizado un programa que Graba y lee una matriz de 25 enteros, la grabación con fwrite() es OK, pero al leer el archivo con fread() solo me recupera 12 de los 25 elementos grabados.
Código: C
  1. ret = fwrite(&matriz, object_size, object_count, flujo); //OK "ret" devuelve 25
  2.  
  3. ret = fread(&matriz, object_size, object_count, flujo); //FALLO "ret" devuelve 12 
  4.  
fread me devuelve el numero de objetos grabados (en "ret"); Este valor debe a su vez debe coincidir con object_count que es 25, igual que en fwrite.

matriz grabada --->   matriz leida
2   4   6   8  10 --->   2 4 6 8 10
12 14 16 18 20 --->   12 14 16 18 20
22 24 26 28 30 --->   22 24 0 0 0
32 34 36 38 40 --->   0 0 0 0 0
42 44 46 48 50 --->   0 0 0 0 0

Detalles Sistema
SO: Windows XP,  Compilador: gcc 4.5.2 (MinGW)

codigo completo
Código: C
  1.  int fila, col;
  2. int matriz[5][5]={
  3.         2,4,6,8,10,
  4.         12,14,16,18,20,
  5.         22,24,26,28,30,
  6.         32,34,36,38,40,
  7.         42,44,46,48,50
  8.     };
  9.    
  10. int main(){ 
  11.     FILE *flujo;
  12.     int close_error;
  13.     char archivo[]="numbers.dat";
  14.  
  15.     size_t object_size = sizeof(int);
  16.     size_t object_count = 25;
  17.     size_t ret;
  18.     /*Valores Iniciales*/
  19.     imprime_matriz();
  20.  
  21.     flujo = fopen(archivo, "w");
  22.     ret = fwrite(&matriz, object_size, object_count, flujo);
  23.     printf("elementos grabados %dn", ret);
  24.     if (ret != object_count)   
  25.         printf("Error al excribir datos al archivon");      
  26.     close_error = fclose(flujo);     
  27.   /*VACIAMOS LA MATRIZ A CEROS*/       
  28.     for (fila = 0; fila <= 4; fila++){
  29.         for(col=0; col <= 4; col++){
  30.             matriz[fila][col]=0;           
  31.         }      
  32.     }  
  33.   /*LEEMOS EL ARCHIVO*/ 
  34.     flujo = fopen(archivo, "r");
  35.     ret = fread(&matriz, object_size, object_count, flujo);  
  36.     printf("elementos retornados %dn", ret);
  37.     if (ret != object_count)
  38.         printf("Error leyendo data desde archivo...!n");   
  39.    
  40.     imprime_matriz(&matriz);   
  41.     fclose(flujo);
  42.  
  43.     return 0;
  44. }
  45.  
  46. void imprime_matriz(){
  47.     for (fila =0; fila<=4 ; fila++){
  48.         for (col=0; col<=4; col++)
  49.             printf("%d ", matriz[fila][col]);
  50.         printf("n");
  51.     }
  52. } 
  53.  

Páginas: [1]