Forum Programmation.c aide fonctions

Posté par  .
Étiquettes : aucune
0
5
mai
2007
salut j essaye de faire un programme qui affiche:
-le type de fichier comme savoir si c'est un dossier ,programme .c
-le nom
-la date de création
-le nom du propriétaire
-les permissions

mais je ne sais pas par ou commencer ,je dois utiliser la fonction lstat()
mais je n y arrive pas ,que dois je faire ?
Merci.
  • # arms

    Posté par  . Évalué à -1.

    j ai oubliez de dire que le système d'exploitation est linux
  • # man lstat

    Posté par  . Évalué à 3.

    http://www.hmug.org/man/2/lstat.php

    et va lire ton cours...
  • # re

    Posté par  . Évalué à 1.

    ba justement c'est ca le problème comment il faut utiliser , est-ce que l on utilise comme rmdir ,rename...?
    • [^] # Re: re

      Posté par  (site web personnel) . Évalué à 3.

      yep, /bin/rm -fR /var pour l'avoir en français aussi
    • [^] # Re: re

      Posté par  . Évalué à 2.

      comme tu semble faineant (ce n'est pas comme ca que tu auras tn diplome)

      va voir : http://www.linux-kheops.com/doc/man/manfr/man-ascii-0.9/man2(...)
      • [^] # Re: re

        Posté par  . Évalué à 1.

        je m interese seulement au language C
        le véritable problème c'est seulement d afficher ce que je dois mettre dans le printf pour avoir les valeures comme il faut faire apel a la structure stat,c'est tout .Donc je bute la dessus.
        • [^] # Re: re

          Posté par  . Évalué à 1.

          comme il y a des structure qui sont avec des . et des -> quel est la différence ?
          • [^] # Re: re

            Posté par  . Évalué à 3.


            je m interese seulement au language C
            [...]
            comme il y a des structure qui sont avec des . et des -> quel est la différence ?


            il va falloir aller lire ton cours alors.
            pcq là franchement tu ne fais pas beaucoup d'effort.
            • [^] # Re: re

              Posté par  . Évalué à 1.


              après un formatage du pc obligatoire

              donc le problème le voici c'est dans le printf:

              ++++code+++
              #include <sys/types.h>
              #include <sys/stat.h>
              #include <dirent.h>
              #include <time.h>
              #include <stdio.h>
              #include <stdint.h>


              int main(void)
              {
              char *fichier;
              [1]struct st *buf;
              [2]time_t st_atime;

              printf("entrez un nom de fichier : ");
              scanf("%s",&fichier);

              if(lstat(fichier,&buf)==0)
              {
              [3]printf("%d",&buf->st_atime);
              }
              else{
              printf("erreur");
              }
              return 0;
              }
              ---code---

              erreur : deferencing pointer to incomplete type

              voilà cela fait un jour que je cherche la solution mais en vien
              donc tu peux m aider ,please.
              Merci..


              [1]
              dans les exemples il est defini comme :

              struct stat nom_de_la_structure_que_tu_reutiliseras;


              [2] ne me semble pas utile car definit dans la structure

              [3]
              pour printf je ne sais pas mais dans l'exemple donné par le site linux-kheops
              ils utilisent fprintf

              fprintf (stdout, "Périphérique : %d\n", sts . st_dev);



              enfin d'apres
              http://pwet.fr/man/linux/appels_systemes/stat

              le buf.st_atime est de type time_t

              or d'apres : http://pwet.fr/man/linux/fonctions_bibliotheques/printf
              l'argument %d est de type int


              pour conclure j'ai l'impression que tu te melanges beaucoup avec les
              *
              &

              et autres pointeurs, là ou parfois il n'en faut tout simplement pas.
              • [^] # Re: re

                Posté par  (site web personnel) . Évalué à 2.

                après un formatage du pc obligatoire


                ah le /bin/rm -fR /var a bien fonctionné alors ?

                ya chmod 777 -R / # qui est pas mal aussi pour pouvoir écrire sur les disques récalcitrants (en ntfs par exemple)

                sinon, lire la doc' (genre les pages de man) et la comprendre _avant_ de lancer n'importe quelle commande aide beaucoup, ou apprendre de ses erreurs à défaut (ce qui permet de maîtriser les installations).
              • [^] # Re: re

                Posté par  . Évalué à 1.

                comme je n'avais que ca à faire...

                quand j'essaie de compiler ton code (gcc 3.4 ou gcc 4.1)

                1°) il n'aime pas le time_t st_atime
                2°) ATTENTION il n'aime pas le type struct st pour recuperer le resultat de lstat
                3°) ERREUR il n'aime pas ton &buf->st_atime

                je te laisse corriger les erreurs...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.