• Viernes 15 de Noviembre de 2024, 10:46

Autor Tema:  escribiendo binarios(resuelto)  (Leído 1102 veces)

geraldsh

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
escribiendo binarios(resuelto)
« en: Lunes 30 de Agosto de 2010, 03:27 »
0
hola amigos, quiero hacer un programa sencillo en c (soy novato) que me pida un fichero y solo me escriba la mitad del fichero, escribi uno pero tengo un error. les dejo el codigo:

Código: C
  1. #include<stdio.h>
  2.  
  3.  
  4. FILE *fichOrg, *fichDest;      
  5. char buffer[2048];                
  6. char nombreOrg[80],              
  7. nombreDest[80];
  8. int cantidad;                    
  9. int temp;
  10. int i;
  11.  
  12. main()
  13. {
  14.  
  15.     printf("Introduzca el nombre del fichero Origen: ");
  16.     scanf("%s",nombreOrg);
  17.     if ((fichOrg = fopen(nombreOrg, "rb")) == NULL)
  18.     {
  19.        printf("No existe el fichero origen!n");
  20.        exit(1);
  21.     }
  22.  
  23.     printf("Introduzca el nombre del fichero Destino: ");
  24.     scanf("%s",nombreDest);
  25.     if ((fichDest = fopen(nombreDest, "wb")) == NULL)
  26.     {
  27.        printf("No se ha podido crear el fichero destino!n");
  28.        exit(1);
  29.     }
  30.  
  31.  temp = sizeof(fichOrg)/2 ;
  32.  
  33.   for(i=sizeof(temp); i < sizeof(fichOrg); i++);
  34.  
  35.     while (! feof(fichOrg) )
  36.     {
  37.      
  38.        cantidad = fread( buffer, 1, sizeof(buffer), fichOrg);
  39.   }
  40.        fwrite(buffer[i], 1, cantidad, fichDest);
  41.    
  42.    
  43.     fclose(fichOrg);
  44.     fclose(fichDest);
  45. }
  46.  
  47.  

pero el problema esta aqui :
Código: C
  1. fwrite(buffer[i], 1, cantidad, fichDest);
  2.  
  3.  

si le quito la me compila perfectamente, pero me copia el archivo completo. porfa ayudenme o denme una idea de como hacerlo.... gracias
« última modificación: Martes 31 de Agosto de 2010, 05:39 por geraldsh »

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: escribiendo binarios
« Respuesta #1 en: Lunes 30 de Agosto de 2010, 19:21 »
0
De hecho tu error no esta ahi, todo tu programa esta equivocado, no es la forma correcta de hacer lo que quieres, pero explicarte todo lo que debes hacer, me llevaria demasiado espacio y tiempo, me puedo dar cuenta claramente que te falta experiencia en lenguaje C, asi que te recomendaria que comenzaras con conceptos un poco mas basicos y sencillos antes de ponerte con algo mas avanzado.

Si aun asi, tienes la intension de hacerlo, te aclarare unos puntos y te dare unos consejos para hacerlo, obviamente no todo, pero te guiara un poco mejor en el camino corecto.

1. sizeof() no regresa el tamaño del archivo, solamente regresa el tamaño (en bytes) de variables en memoria. En C los archivos se manejan por medio de variables especiales llamadas apuntadores, entonces el nombre de esa variable no es el archivo en si, es solamente un apuntador al archivo, por lo tanto repitiendo lo dicho antes, usando sizeof(fichOrg) no obtienes el tamaño del archivo, solo el tamaño de la variable apuntador al archivo.

2. El metodo correcto para obtener el tamaño de tu archivo dependera del compilador y del sistema operativo que estes utilizando. Suponiendo que trabajas con Visual Studio y windows (yo solo trabajo en windows), la manera de obtener el tamaño seria por medio de WIN32_FIND_DATA Structure y FindFirstFile. Si utilzas otro compilador u otro sistema operativo, te tocara averiguar la manera de obtener el tamaño del archivo.

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

geraldsh

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: escribiendo binarios
« Respuesta #2 en: Martes 31 de Agosto de 2010, 05:35 »
0
oh. muchas gracias ya entendi... disculpa la ignorancia y muchas gracias...