Operation sur les pointeurs
Bonjour à toutes et à tous.
J'ai un petit (gros) problème au sujet des pointeurs et des fonctions.
Voila en gros à quoi ressemble mon code.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
#include <stdio.h>
#include <dirent.h>
#include <sys/stat.h>
#include <string.h>
int getInfoFile(char *psNomRep, char *psNomFichier, char *psCheminFichier, int *piDateFichier);
int getInfoFile(char *psNomRep, char *psNomFichier, char *psCheminFichier, int *piDateFichier)
{
struct stat s;
psCheminFichier = (char *) malloc(strlen(psNomRep) + strlen(psNomFichier) + 1);
if(psCheminFichier == NULL)
{
printf("ERR : Plus assez de mémoire dispo...");
exit(1);
}
strcpy(psCheminFichier, psNomRep);
strcat(psCheminFichier, psNomFichier);
lstat(psCheminFichier, &s);
*piDateFichier = s.st_mtime;
} |
Mon souci là-dessus vient de ma variable de sortie psCheminFichier. Je ne sais pas comment faire pour bien la récupérer.
J'ai effectivement compris que pour récupérer une variable en sortie, il fallait en faire un pointeur et attribuer à sa valeur un certain contenu à l'intérieur même de la fonction. Puis, lorsqu'on appelle la fonction, il faut placer dans le bon paramètre l'adresse d'une variable. Mais là, avec strcpy, je ne sais que faire...
Dans mon main(), j'appelle cette fonction en plusieurs occasions.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
int main()
{
struct dirent *pDp;
DIR *pRep_id;
int iDateFichier = 0;
int iDateFichierCourant = 0;
char sCheminFichier;
char sCheminFichierCourant;
char *psNomRep = "/MonChemin/";
int i=0;
pRep_id = opendir(psNomRep);
for(pDp = readdir(pRep_id); pDp != NULL; pDp = readdir(pRep_id))
{
if(strcmp(pDp->d_name, ".") != 0 && strcmp(pDp->d_name, "..") != 0)
{
if (i == 0)
{
getInfoFile(psNomRep, pDp->d_name, &sCheminFichier, &iDateFichier);
i++;
}
else
{
getInfoFile(psNomRep, pDp->d_name, &sCheminFichierCourant, &iDateFichierCourant);
if(iDateFichierCourant < iDateFichier)
{
iDateFichier = iDateFichierCourant;
sCheminFichier =sCheminFichierCourant;
}
}
}
}
closedir(pRep_id);
printf("\n-----------\nLe plus ancien fichier est %s.\n-----------\n", sCheminFichier);
return 0;
} |
Ma fonction main() va me servir à ramener le fichier avec la date de modification la plus basse pour pouvoir ensuite faire un traitement sur ce fichier.
Je m'excuse d'avance pour la maladresse de mon code :mrgreen:.
Bahan