• # Version finale

    Posté par . En réponse au message C : gestion du répertoire de travail. Évalué à 1.

    Voici la version finale, où j'espère ne pas avoir fait d'erreur dans les allocations mémoires. Elle a pour avantage d'être portable, de ne pas utiliser de bibliothèques exotiques, et de conserver la valeur du chemin de l'exécutable (variable racine) :

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    int main(int argc, char *argv[])
     {
     FILE *f;
     int l,r=0;
     char *chemin,*racine;
     char nom_fichier[]="data.txt";
     // Récupération du répertoire de l'exécutable
     l=strlen(argv[0])-strlen(strrchr(argv[0],'/')+1);
     racine=calloc(l+1,1);
     memcpy(racine,argv[0],l);
     // Récupération du chemin complet du fichier à ouvrir
     chemin=malloc(l+strlen(nom_fichier)+1);
     strcpy(chemin,racine);
     strcat(chemin,nom_fichier);
     if ((f=fopen(chemin,"r")) != NULL)
     {
     puts("OK");
     fclose(f);
     }
     else
     {
     puts("Erreur de fichier");
     r=1;
     }
     return r; 
     }