Convertir

Fermé
shad - 24 oct. 2015 à 17:02
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 30 oct. 2015 à 21:28
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

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
24 oct. 2015 à 19:01
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
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
phrase*
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
Modifié par fiddy le 30/10/2015 à 21:29
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