51 votes

Fonction d'écriture de fichier simple en C++

j'ai ce code :

 // basic file operations
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    writeFile();
}

int writeFile () 
{
  ofstream myfile;
  myfile.open ("example.txt");
  myfile << "Writing this to a file.\n";
  myfile << "Writing this to a file.\n";
  myfile << "Writing this to a file.\n";
  myfile << "Writing this to a file.\n";
  myfile.close();
  return 0;
}

Pourquoi cela ne fonctionne-t-il pas ? ça me donne l'erreur :

 1>------ Build started: Project: FileRead, Configuration: Debug Win32 ------
1>  file.cpp
1>e:\documents and settings\row\my documents\visual studio 2010\projects\fileread\fileread\file.cpp(8): error C3861: 'writeFile': identifier not found
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

et ce n'est qu'une simple fonction. J'utilise Visual Studio 2010.

84voto

Tudor Points 39539

Il y a deux solutions à cela. Vous pouvez soit placer la méthode au-dessus de la méthode qui l'appelle :

 // basic file operations
#include <iostream>
#include <fstream>
using namespace std;

int writeFile () 
{
  ofstream myfile;
  myfile.open ("example.txt");
  myfile << "Writing this to a file.\n";
  myfile << "Writing this to a file.\n";
  myfile << "Writing this to a file.\n";
  myfile << "Writing this to a file.\n";
  myfile.close();
  return 0;
}

int main()
{
    writeFile();
}

Ou déclarer un prototype :

 // basic file operations
#include <iostream>
#include <fstream>
using namespace std;

int writeFile();

int main()
{
    writeFile();
}

int writeFile () 
{
  ofstream myfile;
  myfile.open ("example.txt");
  myfile << "Writing this to a file.\n";
  myfile << "Writing this to a file.\n";
  myfile << "Writing this to a file.\n";
  myfile << "Writing this to a file.\n";
  myfile.close();
  return 0;
}

12voto

Igor Oks Points 9737

Votre main ne connaît pas writeFile() et ne peut pas l'appeler.

Déplacez writefile pour être avant main , ou déclarez un prototype de fonction int writeFile(); avant main .

7voto

Macmade Points 27414

Vous devez déclarer le prototype de votre fonction writeFile , avant de l'utiliser réellement :

 int writeFile( void );

int main( void )
{
   ...

2voto

Sumeet Points 664

La déclaration de fonction int writeFile() ; semble manquer dans le code. Ajouter int writeFile () ; avant la fonction main()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X