Erreur ouverture fichier

Fermé
Sormick Messages postés 145 Date d'inscription dimanche 10 novembre 2013 Statut Membre Dernière intervention 8 avril 2024 - Modifié par crapoulou le 17/09/2016 à 20:27
Sormick Messages postés 145 Date d'inscription dimanche 10 novembre 2013 Statut Membre Dernière intervention 8 avril 2024 - 19 sept. 2016 à 05:29
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.


A voir également:

4 réponses

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
18 sept. 2016 à 01:02
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
Sormick Messages postés 145 Date d'inscription dimanche 10 novembre 2013 Statut Membre Dernière intervention 8 avril 2024
18 sept. 2016 à 18:53
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
Sormick Messages postés 145 Date d'inscription dimanche 10 novembre 2013 Statut Membre Dernière intervention 8 avril 2024
18 sept. 2016 à 18:23
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
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
18 sept. 2016 à 23:31
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
Sormick Messages postés 145 Date d'inscription dimanche 10 novembre 2013 Statut Membre Dernière intervention 8 avril 2024
19 sept. 2016 à 05:29
merci énormément !
excellente journée à tous les CCM !!

--
0