Partage
  • Partager sur Facebook
  • Partager sur Twitter

Variable char et fopen

Erreur lors de la compilation lorsque varriable char dans fopen

    19 février 2018 à 20:21:07

    Bonjour/ Bonsoir à toutes et à tous. J'ai un problème lors de la compilation de mon scripte, une variable de type char se trouve dans le nom du fichier (l'endroit qu' indique le chemin vers le fichier de la fonction "fopen"). Le but c'est que le programme changer le chemin d'accès en fonction où se situe le lecteur (clé usb). Le but c'est que si il ne trouve pas de lecteur commençant par une lettre qu'il prend la lettre suivant de l’alphabet et qu'il vérifie un fichier contenant un nom bien précis pour confirmer qu'il s'agit de ma clé usb. Quelqu'un pourrai m'aider pour résoudre le problème puisque le débugger m'indique des messages d'erreurs que se font lors de la compilation(je les ai mis tout en bas) , merci.

    Voici le script:

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

    int main()
    {
        char lettre_lecteur= NULL;
        FILE *confirmation= NULL;
        confirmation= fopen("%s:\\confirmation.txt", lettre_lecteur,"r");

        if(confirmation != NULL){

        }
        else{

        }
        return 0;
    }

    et les erreurs:

    C:\Users\Ernest\CodeBlock_C\vacuum\main.c|9|warning: passing argument 2 of 'fopen' makes pointer from integer without a cast|

    C:\Users\Ernest\CodeBlock_C\vacuum\main.c|9|error: too many arguments to function 'fopen'|

    -
    Edité par ernestMalysz 20 février 2018 à 21:03:35

    • Partager sur Facebook
    • Partager sur Twitter
      19 février 2018 à 20:34:35

      Salut,

      Honnêtement je n'ai pas compris tes explications concernant le but de ton programme.

      Néanmoins voilà ce qui cloche dans ton code :

      - Mettre un char à NULL n'a pas trop de sens, NULL est une macro qui définit une "adresse inexistante", un pointeur qui vaut NULL ne pointe donc sur rien. Peut être que tu voulais écrire char *.

      - Bien essayé pour le fopen(), mais ce n'est pas une fonction variadique contrairement à printf() ou scanf() par exemple (dans leur prototype il y a ...). Tu attendais quoi en liant un format %s avec lettre_lecteur valant NULL ?

      Essayes donc de mieux décrire ton objectif, et quelles sont tes lacunes t'empêchant d'y arriver  :)

      • Partager sur Facebook
      • Partager sur Twitter
        19 février 2018 à 20:52:12

        Le %s c'est pour les chaines de caractères, pas pour les caracteres (%c)

        Comme dit, fopen ne  prends pas de chaines formattables (%s %d %c etc...), il te faut donc créer correctement la chaine avant. Pour cela tu peux utiliser la fonction sprintf. Vois sa documentation.

        Bien entendu, il faut que tu donne une valeur correcte (en dur dans le code pour tester, ou via une fonction qui va chercher a identifié le lecteur usb une fois plus avancé dans le programme...) a lettre_lecteur avant de former définitivement ta chaine. (tu peux aussi la demander a l'utilisateur)

        -
        Edité par breizhbugs 19 février 2018 à 20:54:28

        • Partager sur Facebook
        • Partager sur Twitter
        ** La doc, c'est comme le PQ: ça sert à se démerder tout seul **

        Variable char et fopen

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown