Convertir

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. Contributeur
    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.
    1. 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
    2. Contributeur
      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,