Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: RicGeo en 9 Junio 2014, 16:36 pm



Título: Programa para saber si un archivo esta vacío en C
Publicado por: RicGeo en 9 Junio 2014, 16:36 pm
Que tal amigo quería saber si me podrían ayudar con un programa en c para saber si un archivo tiene contenido o está vacío. Me comentaron que usara EOF pero no domino bien esto, agradecería bastante su apoyo.
Este es el programita en sí.
Código
  1. include<stdio.h>
  2. int main(){
  3.    FILE *rv;
  4.    fopen=("/home/carpeta/x.txt",r);
  5.    if(¿?) //Aca creo que iria algo del EOF
  6.    printf("Archivo tiene contenido");
  7.    else
  8.    printf("Archivo vacio");  
  9.    return 0;
  10. }
  11.  


Título: Re: Programa para saber si un archivo esta vacío en C
Publicado por: eferion en 9 Junio 2014, 16:53 pm
No se de dónde has sacado ese código pero ya te digo que no va ni a compilar.

Código
  1. fopen=("/home/carpeta/x.txt",r);

* fopen es una función, no una variable.
* r debería ser una cadena de caracteres para indicar la forma de abrir el fichero.

Por otro lado, para saber si el fichero está vacío puedes mover el cursor al final y consultar su posición en ese punto... si la posición final es 0, el fichero está vacío:

Código
  1. FILE *rv;
  2. rv = fopen( "/home/carpeta/x.txt", "r" );
  3. fseek( rv, 0, SEEK_END );
  4. if (ftell( rv ) == 0 )
  5. {
  6.  // fichero vacio
  7. }


Título: Re: Programa para saber si un archivo esta vacío en C
Publicado por: RicGeo en 9 Junio 2014, 17:05 pm
No se de dónde has sacado ese código pero ya te digo que no va ni a compilar.

Código
  1. fopen=("/home/carpeta/x.txt",r);

* fopen es una función, no una variable.
* r debería ser una cadena de caracteres para indicar la forma de abrir el fichero.

Por otro lado, para saber si el fichero está vacío puedes mover el cursor al final y consultar su posición en ese punto... si la posición final es 0, el fichero está vacío:

Código
  1. FILE *rv;
  2. rv = fopen( "/home/carpeta/x.txt", "r" );
  3. fseek( rv, 0, SEEK_END );
  4. if (ftell( rv ) == 0 )
  5. {
  6.  // fichero vacio
  7. }
Hermano eferion gracias no sabes cuanto me haz ayudado, no me di cuenta del error del fopen por q este es un ejemplo que lo hice rápido, tengo un programa mas completo y complejo que ahora gracias a ti está finalizado miles de gracias