::) Pequeño codigo en C++ que cuenta la cantidad de bytes de un archivo pasado como parametro.
#include <cstdio>
#include <iostream>
void main(int argc, char *argv[])
{
FILE *pFile;
long size;
if(argc==2)
{
pFile = fopen(argv[1],"r");
if(pFile!=NULL)
{
if(!fseek(pFile,0,SEEK_END))
{
size=ftell(pFile);
fclose(pFile);
std::cout<<"El tamaño total del archivo es ";
std::cout<<size<<" Bytes."<<std::endl;
}
else std::cout<<"Sucedio un problema mientras se trataba de obtener la cantidad de bytes."<<std::endl;
}
else std::cout<<"Problemas con el archivo, verifique que el archivo exista."<<std::endl;
}
else std::cout<<"Uso: "<<argv[0]<<" <ruta de archivo>"<<std::endl;
}
Ejemplos:
lordrna@AAO150:~/Proyectos/C++/ByteCounter$ ls
bc bc.cpp
lordrna@AAO150:~/Proyectos/C++/ByteCounter$ ./bc bc.cpp
El tamaño total del archivo es 627 Bytes.
lordrna@AAO150:~/Proyectos/C++/ByteCounter$ ./bc cdc
Problemas con el archivo, verifique que el archivo exista.
ftell retorna long, por lo tanto size debe ser long. El archivo de cabecera en C++ es cstdio.
Saludos
... se me paso lo del valor de retorno de ftell() pero con stdio.h compila bien.
no es que haya problema por la compilación en el stdio.h, esque tu código está usando la librería standar de C++ y por esa razón la cabecera no debería ser <stdio.h> estandar de C sino más bien <cstdio> standar de C++
Citarno es que haya problema por la compilación en el stdio.h
En realidad si es un problema ya que generar híbridos entre C y C++ sin un motivo real siempre es un error. Los archivos de cabecera stdio.h y cstdio son distintos y están pensados para cada lenguaje en particular.
Citarpero con stdio.h compila bien.
Que un código compile no significa que este bien hecho. Igualmente en este caso lo del archivo de cabecera es secundario, el error principal es el de utilizar un int en lugar del long requerido.
Saludos!
Cita de: Littlehorse en 17 Enero 2011, 22:58 PM
En realidad si es un problema ya que generar híbridos entre C y C++ sin un motivo real siempre es un error. Los archivos de cabecera stdio.h y cstdio son distintos y están pensados para cada lenguaje en particular.
Que un código compile no significa que este bien hecho. Igualmente en este caso lo del archivo de cabecera es secundario, el error principal es el de utilizar un int en lugar del long requerido.
Saludos!
Es bueno saberlo, gracias por la acotación
Listo... ya el codigo esta con las correcciones recomendadas.
Te falta el return.