Erreur ouverture fichier

Sormick Messages postés 163 Statut Membre -  
Sormick Messages postés 163 Statut Membre -
Bonjour,

Je suis un tout nouveau débutant en C++
j'utilise visual studio community 2015

Je viens d'apprendre à ouvrir un fichier TXT avec ce code:

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

FILE* fopen_s(const char* nomDuFichier, const char* modeOuverture);

int main(int argc, char *argv[])
{
 FILE* fichier = NULL;

 fichier = fopen_s("C:\\Users\\sormick2\\Desktop\\test.txt", "r+");

 if (fichier != NULL)
 {
  // On peut lire et écrire dans le fichier
 }
 else
 {
  // On affiche un message d'erreur si on veut
  printf("Impossible d'ouvrir le fichier test.txt");
 }

 return 0;
}


Je ne comprends pas car il me fait une erreur de compilation (LNK2019)
Pouvez vous me dire ce qui ne va pas dans mon code?

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.


4 réponses

  1. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102
     
    Bonjour,

    ton code c'est 100% du C, pas du C++. Si tu essaies de la compiler en C++, attends-toi à des problèmes.
    Tu indiques une erreur de compilation avec un nom LNK qui fait plutôt penser à une erreur au moment de l'édition des liens. Il faudrait l'erreur complète donnée par le linkeur.
    Quand on ajoute un prototype de fonction, on indique au compilateur que cette fonction existe et que l'on s'engage à la fournir au link, l'as-tu fait?

    En réalité, la fonction C fopen_s() s'utilise de la manière suivante :
     if ( fopen_s( &fichier , "C:\\Users\\sormick2\\Desktop\\test.txt", "r+") != 0 )
        return -1;
    0
    1. Sormick Messages postés 163 Statut Membre
       
      malheureusement je ne comprends pas ce que veut dire s'engager à le fournir au link.

      En attendant j'ai modifié mon code comme ceci mais toujours pas de fichier ouvert.
      c'est peut être le If qui gène mais je n'en suis pas sûr

      #include <stdio.h>
      #include <stdlib.h>
      
      FILE* fopen_s(const char* nomDuFichier, const char* modeOuverture);
      
      int main(int argc, char *argv[])
      {
      	FILE* fichier = NULL;
      
      	if (fopen_s(&fichier, "C:\\Users\\sormick2\\Desktop\\test.txt", "r+") != 0)
      
      		return -1;
      }
      
      0
  2. Sormick Messages postés 163 Statut Membre
     
    Merci beaucoup pour toutes ces infos!!
    ok je ferias attention pour rajouter des balises à l'avenir.
    maintenant je comprends mieux pourquoi je ne peux pas ouvrir le fichier car ce sont des codes en C et pas C++.
    Par contre l'erreur LNK je n'y comprends rien. Quand je dis que je suis débutant c'est que c'est du bas niveau :).
    Je suppose que l'erreur complète c'est ça non?
    https://docs.microsoft.com/en-us/previous-versions/799kze2z(v=vs.140)?redirectedfrom=MSDN
    0
  3. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102
     
    Non,
    Ca c'est un lien vers Microsoft, l'erreur est juste à côté!

    En C++, on écrit plutôt
    #include <iostream> // pout std::cout
    #include <fstream>  // pour std::fstream
    
    int main( int argc , char *argv[] )
    {
       std::fstream fichier( "C:\\Users\\sormick2\\Desktop\\test.txt", std::ios_base::in | std::ios_base::out );
    
       if ( fichier )
       {
          // On peut lire et écrire dans le fichier
       }
       else
       {
          // On affiche un message d'erreur si on veut
          std::cout << "Impossible d'ouvrir le fichier test.txt" << std::endl;
       }
       return 0;
    }
    0
  4. Sormick Messages postés 163 Statut Membre
     
    merci énormément !
    excellente journée à tous les CCM !!

    --
    0