Convertir

shad -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

je n'ai pas encore etudier le language c++ et je voudrais traduire cette fonction en c aidez moi svp string code(string texte, int decalage) {
const size_t taille = texte.size();
string chaine(texte);
for (size_t i = 0; i < taille; i++)
chaine[i] = code(chaine[i], decalage);
return chaine;

1 réponse

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Et sinon, tu connais le C ?
    Grosso modo, il suffit de remplacer les string par des tableaux de char. Avec ça, tu devrais pouvoir convertir.
    N'hésite pas à montrer ta proposition pour qu'on puisse te dire si c'est bon ou pas.
    0
    1. shad
       
      hmm effectivement ms je veux passer par des pointeurs pour avoir une allocation dynamique vu que je vais travailler sur des textes plus au moins long ==> taille depend du choix de la pharse de l'utilisateur , le problème c'est que je veux passer des valeurs par adresse pour éviter la recopie j'y arrive pas
      0
    2. shad
       
      phrase*
      0
    3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Pour créer un pointeur :
      char *chaine;

      Pour allouer l'espace mémoire :
      chaine=malloc((taille+1));
      if(chaine==NULL) {
           fputs("erreur d'allocation\n", stderr);
           return EXIT_FAILURE;
      }
      

      Saisie utilisateur :
      if (fgets(chaine, sizeof chaine, stdin) != NULL) {
           char *p=strchar(chaine, '\n');
           if (p != NULL)
                *p='\0';
           else
                viderBuffer();
      }
      

      Note : il faudra faire la fonction videBuffer() : une simple boucle while de lecture sur le buffer clavier (stdin) jusqu'à obtention d'un EOF ou '\n' permettra de le vider.

      Désallocation de l'espace mémoire :
      free(chaine), chaine=NULL;


      Cdlt,
      0