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. 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
    1. Comment utilisé ce que tu ma monter pour pouvoir l'écrire comme je l'ai montré dans mon premier post ?
      0
      1. Si j'ai bien compris ce programme va créer une variable qui contiens la valeur de homepath ?
        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. c'est quoi une concaténation ?
            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. 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. 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
                    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