Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1070 connectés 

  FORUM HardWare.fr
  Programmation
  C

  DE C++ EN C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

DE C++ EN C

n°2118813
baboye11
l'entre-aide avant tout.
Posté le 30-12-2011 à 21:12:32  profilanswer
 

Bonjour, aidez moi s'il vous plait :  
 
Comment pourrai je traduire cette ligne de C++ en C :     void extract_word ( string s, string &s1, string &s2 )
 
J'ai du mal avec les "&".Merci d'avance   :wahoo:  
 

mood
Publicité
Posté le 30-12-2011 à 21:12:32  profilanswer
 

n°2118814
baboye11
l'entre-aide avant tout.
Posté le 30-12-2011 à 21:33:55  profilanswer
 

j'ai essayé avec  void extract_word ( char *s, (char *) &s1, (char *) &s2 )   mais négatif....

n°2118824
Terminapor
I'll see you rise.
Posté le 30-12-2011 à 23:33:54  profilanswer
 

le '&' indique que la variable est une référence, c'est propre au C++.
 
Si t'as besoin de modifier s1 ou s2, fais passer par pointeur en C ;)


---------------
Perhaps you don't deserve to breathe
n°2118827
baboye11
l'entre-aide avant tout.
Posté le 30-12-2011 à 23:46:11  profilanswer
 

Terminapor a écrit :

le '&' indique que la variable est une référence, c'est propre au C++.
 
Si t'as besoin de modifier s1 ou s2, fais passer par pointeur en C ;)


 
 
Merci je  comprends maintenant, vais essayer et voir ce que ca donne

n°2118859
theshockwa​ve
I work at a firm named Koslow
Posté le 31-12-2011 à 13:53:02  profilanswer
 

qu'est-ce que tu appelles traduire ? C'est dans quel contexte ?
Parce que si c'est pour réutiliser une lib compilée en C++ depuis du C (dll ou shared object), tu vas avoir de très mauvaises surprises ...


---------------
last.fm
n°2118886
baboye11
l'entre-aide avant tout.
Posté le 31-12-2011 à 19:51:15  profilanswer
 

theshockwave a écrit :

qu'est-ce que tu appelles traduire ? C'est dans quel contexte ?
Parce que si c'est pour réutiliser une lib compilée en C++ depuis du C (dll ou shared object), tu vas avoir de très mauvaises surprises ...


 
 
Oui en fait c'est cette fonction que je veux recoder en C,elle recoit en parametre un char et 2 passages par reference , elle doit extraire le premier mot d'une chaine :
 
 
void s_word_extract_first ( string s, string &s1, string &s2 )
 
{
  int i;
  int mode;
  int s_len;
 
  s_len = s.length ( );
  s1 = "";
  s2 = "";
  mode = 1;
 
  for ( i = 0; i < s_len; i++ )
  {
    if ( mode == 1 )
    {
      if ( s[i] != ' ' )
      {
         mode = 2;
      }
    }
    else if ( mode == 2 )
    {
      if ( s[i] == ' ' )
      {
        mode = 3;
      }
    }
    else if ( mode == 3 )
    {
      if ( s[i] != ' ' )
      {
        mode = 4;
      }
    }
    if ( mode == 2 )
    {
      s1 = s1 + s[i];
    }
    else if ( mode == 4 )
    {
      s2 = s2 + s[i];
    }
  }
 
  return;
}
 
 
Pour apeler la fonction je fais ceci :     s_word_extract_first ( line, word, rest );
 
Ca marche bien en C++,mais comment en C svp ???

n°2118887
baboye11
l'entre-aide avant tout.
Posté le 31-12-2011 à 19:54:10  profilanswer
 

Aussi, je dois poster le projet ce soir à minuit au plus tard, je compte sur vous pour m'aider .

n°2118927
theshockwa​ve
I work at a firm named Koslow
Posté le 01-01-2012 à 13:56:43  profilanswer
 

ce code est mauvais en C++, sa traduction directe en C serait aussi mauvaise. Regarde ta bibliothèque standard pour la manipulation de chaines, tu trouveras de bonnes méthodes pour le faire.
 
Lance-toi, fournis-nous un code que tu as écrit toi même, et ca servira de base pour qu'on t'aide.


---------------
last.fm
n°2118939
Terminapor
I'll see you rise.
Posté le 01-01-2012 à 18:12:06  profilanswer
 

baboye11 a écrit :


 
 
Oui en fait c'est cette fonction que je veux recoder en C,elle recoit en parametre un char et 2 passages par reference , elle doit extraire le premier mot d'une chaine :
 
 
void s_word_extract_first ( string s, string &s1, string &s2 )
 
{
  int i;
  int mode;
  int s_len;
 
  s_len = s.length ( );
  s1 = "";
  s2 = "";
  mode = 1;
 
  for ( i = 0; i < s_len; i++ )
  {
    if ( mode == 1 )
    {
      if ( s[i] != ' ' )
      {
         mode = 2;
      }
    }
    else if ( mode == 2 )
    {
      if ( s[i] == ' ' )
      {
        mode = 3;
      }
    }
    else if ( mode == 3 )
    {
      if ( s[i] != ' ' )
      {
        mode = 4;
      }
    }
    if ( mode == 2 )
    {
      s1 = s1 + s[i];
    }
    else if ( mode == 4 )
    {
      s2 = s2 + s[i];
    }
  }
 
  return;
}
 
 
Pour apeler la fonction je fais ceci :     s_word_extract_first ( line, word, rest );
 
Ca marche bien en C++,mais comment en C svp ???


 
 
Une référence permet de modifier directement un argument, j'm'explique avec un bout de code :  
 

Code :
  1. void fonction_avec_reference(int&a)
  2. {
  3. a=180;
  4. }
  5. void fonction_sans_reference(int a)
  6. {
  7. a=180;
  8. };
  9. int main(int,char**)
  10. {
  11. int var=0;
  12. fonction_sans_reference(var); // Ici, on appelle la fonction sans utiliser de référence, donc var ne sera pas modifié car le passage se fait par copie dans ce cas.
  13. fonction_avec_reference(var); // Maintenant, var aura une valeur de 180, étant donné que le fait d'utiliser une référence nous fait travailler directement sur la variable utilisée, et pas sur une copie
  14. return 0;
  15. }


 
Normalement tu as les connaissances requise pour faire ça en C avec les pointeurs ;)


---------------
Perhaps you don't deserve to breathe
n°2118957
baboye11
l'entre-aide avant tout.
Posté le 01-01-2012 à 19:26:16  profilanswer
 

Terminapor a écrit :


 
 
Une référence permet de modifier directement un argument, j'm'explique avec un bout de code :  
 

Code :
  1. void fonction_avec_reference(int&a)
  2. {
  3. a=180;
  4. }
  5. void fonction_sans_reference(int a)
  6. {
  7. a=180;
  8. };
  9. int main(int,char**)
  10. {
  11. int var=0;
  12. fonction_sans_reference(var); // Ici, on appelle la fonction sans utiliser de référence, donc var ne sera pas modifié car le passage se fait par copie dans ce cas.
  13. fonction_avec_reference(var); // Maintenant, var aura une valeur de 180, étant donné que le fait d'utiliser une référence nous fait travailler directement sur la variable utilisée, et pas sur une copie
  14. return 0;
  15. }


 
Normalement tu as les connaissances requise pour faire ça en C avec les pointeurs ;)


 
 
Merci, c'est très explicite ton explication, j'ai dèjà envoyé le projet mais ceci est une connaissance de plus, j'ai bien saisi les references maintenant, thanks for all !  :D  


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  DE C++ EN C

 

Sujets relatifs
[C]Comment récupérer une saisie clavier ?[C Multitâche] Récupérer un string sur stdin
Les fichiers en C[C#] Cacher des méthodes d'une interface
[C][OSX][LibSDL] Compilation OK, mais problème d'exécution...[C] Tri par insertion simple & pointeurs de dates
[Objective-C] Récupérer une variable d'un vueConvertir C++ en C
[MATLAB] Appeler une structure C d'une dll avec Calllib (crash)Structure C
Plus de sujets relatifs à : DE C++ EN C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR