[C con Clase] Tamaño de Buffer

anonymous.mx anonymous.mx en gmail.com
Mie Jun 2 18:20:32 CEST 2010


Hola a todos,

Soy nuevo en programacion en C, estoy leyendo archivos SEGY y extraigo
valores de trazas completas. (un archivo SEGY se compone de 3200 bytes para
EBCDIC, 400 bytes para el encabezado binario e indica el tamaño de la traza,
la traza que se compone de 240 bytes de encabezado y el numero de muestras
definido en el encabezado binario).

Solicito su ayuda para que me orienten a modificar el siguiente codigo, a
fin de poder indicar mediante un parametro el tamaño de buffer que sería el
tamaño de la traza sismica a copiar.

// copia.c: Copia de ficheros
// Uso: copia <fichero_origen> <fichero_destino>
#include <stdio.h>
int main(int argc, char **argv) {
    FILE *fe, *fs;
    unsigned char buffer[2048]; // <<== El tamaño quiero tomarlo como
parametro para no volver a comiplar el programa.
    int bytesLeidos;
    int bytesheader;
    if(argc != 3) {
       printf("Usar: copia <fichero_origen> <fichero_destino>\n");
       return 1;
    }
    // Abrir el fichero de entrada en lectura y binario
    fe = fopen(argv[1], "rb");
    if(!fe) {
       printf("El fichero %s no existe o no puede ser abierto.\n", argv[1]);
       return 1;
    }
    // Crear o sobreescribir el fichero de salida en binario
    fs = fopen(argv[2], "wb");
    if(!fs) {
       printf("El fichero %s no puede ser creado.\n", argv[2]);
       fclose(fe);
       return 1;
    }
    // Bucle de copia:
    while((bytesLeidos = fread(buffer, 1, sizeof(buffer), fe)))
       fwrite(buffer, 1, bytesLeidos, fs);
    //Cerrar ficheros:
    fclose(fe);
    fclose(fs);
    return 0;
}

Quisiera utilizar un parametro del llamado del programa como el tamaño de
buffer, y así evitarme volver a compilar el programa cada vez que el tanaño
de la traza sea diferente al extrar un dato de otro archivo.

Saludos desde Villahermosa, Tabasco, Mexico, America, Tierra.

Jose Luis
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100602/c8f88065/attachment.html>


Más información sobre la lista de distribución Cconclase