Programa para saber si un archivo esta vacío en C

Iniciado por RicGeo, 9 Junio 2014, 16:36 PM

0 Miembros y 1 Visitante están viendo este tema.

RicGeo

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í.

include<stdio.h>
int main(){
    FILE *rv;
    fopen=("/home/carpeta/x.txt",r);
    if(¿?) //Aca creo que iria algo del EOF
    printf("Archivo tiene contenido");
    else
    printf("Archivo vacio"); 
    return 0;
}

eferion

No se de dónde has sacado ese código pero ya te digo que no va ni a compilar.

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:


FILE *rv;
rv = fopen( "/home/carpeta/x.txt", "r" );
fseek( rv, 0, SEEK_END );
if (ftell( rv ) == 0 )
{
  // fichero vacio
}

RicGeo

Cita de: 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.

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:


FILE *rv;
rv = fopen( "/home/carpeta/x.txt", "r" );
fseek( rv, 0, SEEK_END );
if (ftell( rv ) == 0 )
{
  // fichero vacio
}

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