elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Como utilizar Struct stat
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como utilizar Struct stat  (Leído 2,399 veces)
txiki481

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Como utilizar Struct stat
« en: 6 Mayo 2018, 12:19 pm »

Hola tengo este programa y quiero que cuando acabe devuelva información sobre el archivo, y para ello he usado struct stat pero me da error segmentación fault: 11.
Alguien podría decirme como solucionarlo?

#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

#define BUFFER_TAMAINA 512

int main(int argc, const char * argv[])
{
   int a;
   int f,k;
   char buff[BUFFER_TAMAINA];
   FILE *f1;

   struct stat *stat1;

   if (argc==3)
    {

       if (strcmp(argv[2],"0")!=0 && atoi(argv[2])==0)
       {
         write(1, "Arazoa, posizioa ez da zenbaki bat\n", 36);
         exit(1);
      }

      f1=fopen(argv[1], "r+");

      if(errno==ENOENT)
      {
         write(1, "Fitxategia ez da exititzen\n", 28);
         exit(1);
      }
      while(fgetc(f1)!=EOF){k++;}
      fclose(f1);

      if((atoi(argv[2]))>k)
      {
         write(1,"Posizio altuegia ezarri da\n",28);
         exit(1);
      }
   
      if(atoi(argv[2])<0){
         write(1, "Arazoa, posizioa negatiboa da\n", 31);
         exit(1);
      }


      f = open(argv[1], O_WRONLY,00777);

      if(errno==ENOENT){
         write(1, "Fitxategia ez da exititzen\n", 28);
         exit(1);
      }

      lseek(f, atoi(argv[2]), SEEK_SET);

      while ((a=read(0,buff,BUFFER_TAMAINA))>0)
      {   
         if(stat(argv[1],&*stat1) != NULL)
         { 
            write(f,buff,a);
            printf("Información:\n",argv[1]);
                                printf("---------------------------\n");
                                printf("Tamaño: \t \t %d bytes\n", stat1->st_size);
                                printf("Links: \t%d\n", stat1->st_nlink);
                                printf("inode: \t \t %d\n", stat1->st_ino);
                        
                    }
      
      }

      close(f);
   }
    else
    {
           write(1,"Erabilera: ./idatzi_fitx [fitxategia] [posizioa]\n",50);
    }
}


En línea

srWhiteSkull


Desconectado Desconectado

Mensajes: 444



Ver Perfil WWW
Re: Como utilizar Struct stat
« Respuesta #1 en: 6 Mayo 2018, 16:59 pm »

No tienes que definir un puntero a esa estructura, sólo una variable. Luego al segundo argumento de stat() tienes que indicarle a donde apunta la variable(pasar por referencia &), su dirección en memoria, para que dicha función escriba en esa zona y rellene los campos de la estructura.

El valor devuelto es mayor de -1 si tiene éxito.

Para acceder a los miembros de una estructura se usa el punto y no la flecha.

Algunos valores hay que castearlos(casting) para mostrarlos correctamente y usar el código de formato adecuado.

Tienes que usar la etiqueta pertinente para mostrar correctamente el código en el hilo.


« Última modificación: 6 Mayo 2018, 17:04 pm por srWhiteSkull » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[SOLUCIONADO]¿Como printear un valor de un struct dentro de otro struct?
Programación C/C++
Firos 0 5,186 Último mensaje 24 Marzo 2011, 13:47 pm
por Firos
problema con struct como parametro a funciones
Programación C/C++
ralymontes 1 3,350 Último mensaje 9 Noviembre 2011, 04:45 am
por rir3760
sys/stat, stat() problema (?) [Lenguaje C]
Programación C/C++
BatchianoISpyxolo 5 4,368 Último mensaje 27 Octubre 2012, 00:23 am
por Khronos14
Problema con Stat() en C
Programación C/C++
Borluck 5 2,754 Último mensaje 7 Mayo 2013, 17:23 pm
por leosansan
Duda con respecto a struct dentro de struct
Programación C/C++
Naimaderis 1 3,484 Último mensaje 2 Abril 2017, 00:10 am
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines