Probleme en C

Bonjour,
je débute dans la programmation C et je voudrais savoir comment créer un dossier/fichier sur le bureau
j'ai essayer ça:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{

FILE* fichier = NULL;

fichier = fopen("%HOMEPATH%\\Desktop\\test.txt", "w");

return 0;
}
mais ça n'a pas marché(si je met le nom complet a la place de %HOMEPATH% ça marche)
qu'est-ce qui ne va pas? y-a t-il un autre moyen ?

merci d'avance pour vos réponse.
Configuration: Windows 7
Firefox 3.5.7

10 réponses

  1. Contributeur
    Salut,
    Ceci est normal. %homepath% n'existe dans dans la console et renvoie la valeur de la variable homepath.
    Si tu mets ceci en C, il ne le traduira pas. Si tu veux, tu peux néanmoins utiliser la fonction getenv : http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/getenv.3.html

    Cdlt,
    0
    1. Merci de m'avoir répondu mais ce que je cherche a faire c'est créer un dossier ou un fichier le bureau de celui qui lance le programme car je ne connais pas son nom d'utilisateur ou encore l'emplacement de son dossier utilisateur
      est-ce qu'il y a quelque chose a écrire pour pouvoir accéder directement au bureau ou au dossier utilisateur ?
      0
      1. Contributeur
        Je te réponds la même chose que précédemment : getenv(var);
        Par exemple getenv(homepath) te renverra un pointeur sur un char contenant la chaîne de caractère que tu t'attendais à avoir en tapant %homepath%. A partir de là, une petite concaténation avec strncat pour mettre "\\Desktop\\..." et le tour est joué.
        0
        1. ok merci mais le truc c'est que j'ai pas bien compris (je débute si tu pouvais m'expliqué ce qu'il faut que je fasse,j'ai beaucoup avec les pointeur) merci bcp
          0
          1. c'est quoi une concaténation ?
            0
            1. Contributeur

              const char* homepath=getenv("homepath");
              if (homepath) {
              puts(homepath);
              }

              Ce programme mettra la variable d'environnement homepath dans à une adresse pointée par homepath.
              Donc, en mettant puts (ou printf), tu peux afficher la valeur de %homepath%.
              0
              1. Si j'ai bien compris ce programme va créer une variable qui contiens la valeur de homepath ?
                0
                1. Comment utilisé ce que tu ma monter pour pouvoir l'écrire comme je l'ai montré dans mon premier post ?
                  0
                  1. j'arrive a récupérer le chemin entier (avec printf) mais comment le mettre dans une fonction fopen ????

                    #include <stdio.h>
                    #include <stdlib.h>

                    int main(int argc, char *argv[])
                    {

                    const char* userprofile=getenv("userprofile");
                    if (userprofile) {
                    printf(userprofile);

                    }

                    return 0;
                    }
                    0