Convertir C++ en C

Convertir C++ en C - C++ - Programmation

Marsh Posté le 13-12-2011 à 13:37:02    

Bonjour tout le monde,
 
j'ai vraiment besoin d'aide svp. En fait j'ai une page codée en C++ que je voudrais convertir en C.
 
Y'a pas tellement de différences mais y'a des trucs qui me dépassent, comme par exemple la bibliothèque "stream" qui est propre à C++, ofstream, iftream, &output, output_unit, etc...
 
Je voudrais que vous me recodez mes fonctions (que j'ai extrait de la page) en C SVP ???
 
Voici les fonctions (j'ai mis en gras ce qui m'échappe):
 
# include <cstdlib>
# include <iostream>
# include <iomanip>
# include <cstring>
# include <fstream>
# include <cmath>
# include <ctime>
 
using namespace std;
 
# include "cnf_io.H"
 
//***************************************************************************80
bool cnf_data_read ( string cnf_file_name, int v_num, int c_num,  
  int l_num, int l_c_num[], int l_val[] )
 
//****************************************************************************80
 
{
  int c_num2;
  bool error;
  int ierror;
  ifstream input;
  int l_c_num2;
  int l_num2;
  int l_val2;
  int length;
  string line;
  string rest;
  int v_num2;
  string word;
   
  error = false;
 
  input.open ( cnf_file_name.c_str ( ) );
 
  if ( !input )
  {
    cout << "\n";
    cout << "CNF_DATA_READ - Fatal error!\n";
    cout << "  Could not open file.\n";
    exit ( 1 );
  }
 
  while ( 1 )
  {
    getline ( input, line );
     
    if ( input.eof ( ) )
    {
      cout << "\n";
      cout << "CNF_DATA_READ - Fatal error!\n";
      cout << "  Error3 while reading the file.\n";
      exit ( 1 );
    }
 
    if ( line[0] == 'c' || line[0] == 'C' )
    {
      continue;
    }
 
 
 
 
  }
 
  ;
 
  while ( 1 )
  {
    getline ( input, line );
 
    if ( input.eof ( ) )
    {
      break;
    }
 
   
 
  input.close ( );
 
  return ;
}  
//****************************************************************************80
 
bool cnf_data_write ( int c_num, int l_num, int l_c_num[], int l_val[],  
  ofstream &output_unit )
 
//****************************************************************************80
 
{
  int c;
  bool error;
  int i1;
  int i2;
  int l;
  int l_c;
 
  error = false;
 
  l = 0;
 
  for ( c = 0; c < c_num; c++ )
  {
    i1 = 1;
    i2 = 10;
    for ( l_c = 0; l_c < l_c_num[c]; l_c++ )
    {
      output_unit << " " << setw(7) << l_val[l];
      l = l + 1;
 
      if ( ( ( l_c + 1 ) % 10 ) == 0 )
      {
        output_unit << "\n";
      }
    }
    output_unit << " " << setw(7) << 0 << "\n";
  }
 
  return error;
}

Reply

Marsh Posté le 13-12-2011 à 13:37:02   

Reply

Marsh Posté le 15-12-2011 à 15:10:45    

sinon le premier compilateur AT&T te fera tout ça a ta place si t'arrives a le retrouver :)

Message cité 1 fois
Message édité par Lightness1024 le 15-12-2011 à 15:11:00

---------------
http://projets.6mablog.com/
Reply

Marsh Posté le 16-12-2011 à 12:56:16    

ok merci je vais essayer.

Reply

Marsh Posté le 19-12-2011 à 16:43:31    

Lightness1024 a écrit :

sinon le premier compilateur AT&T te fera tout ça a ta place si t'arrives a le retrouver :)


oui, c'est une bonne idée, ca, surtout que la stl n'était pas là dès le début.
 
Pour ce genre de tâche, il faut s'armer de courage et traduire, y'a pas de solution miracle, C++ permet d'exprimer le code d'une manière très différente de C, mais dans les exemples que tu donnes, la traduction devrait rester  assez restreinte en terme de portée, visiblement.
 
les streams correspondent dans ton cas au FILE* du C. Les ifstream vont pour Input File Stream donc ce sont des fichiers ouverts en lecture. Les ofstream sont des Output File Stream, donc des fichiers ouverts en écriture.

Message cité 1 fois
Message édité par theshockwave le 19-12-2011 à 16:44:21

---------------
last.fm
Reply

Marsh Posté le 02-01-2012 à 15:09:40    

theshockwave a écrit :


oui, c'est une bonne idée, ca, surtout que la stl n'était pas là dès le début.
 
Pour ce genre de tâche, il faut s'armer de courage et traduire, y'a pas de solution miracle, C++ permet d'exprimer le code d'une manière très différente de C, mais dans les exemples que tu donnes, la traduction devrait rester  assez restreinte en terme de portée, visiblement.
 
les streams correspondent dans ton cas au FILE* du C. Les ifstream vont pour Input File Stream donc ce sont des fichiers ouverts en lecture. Les ofstream sont des Output File Stream, donc des fichiers ouverts en écriture.


 
Ce qui veut dire implicitement qu'il faut également utiliser du fprintf et du fscanf pour gérer les entrés et sorties. Et je ne parle pas non plus des "string" qu'il va falloir gérer en char*. il y a quand même un peu de boulot.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed