Cryptage une chaine de caractères en C

malikat dalam -  
 malikat dalam -
Bonjour,
je veux executer un programme qui crypte une chaine de cractères ,j'ai deja essayé ms puisqu je suis debutant j'arriv ps j'esper que quelqu'un peut m'aider MERCI
voici mon code source:


#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main(int argc, char *argv[])
{ int i=0,j=0;
char phrase[30],text[15];
printf("Tapez une phrase \n");
gets(phrase);
for(i=0;i<30;i++)
{ for(j=0;j<30;j++)
text[j]=phrase[strlen(phrase)-i];
}
printf("Votre phrase de nouveau est %s:\n",text[j]);
system("PAUSE");
return 0;
}
A voir également:

1 réponse

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,
Attention, les chaînes text et phrase n'ont pas la même taille.
Il y a déjà un problème de ce côté.

gets(phrase);
Il ne faut pas utiliser la fonction gets, car si tu rentres une chaîne trop longue, cela fera planter ton programme. Utilise plutôt fgets. Il ne faut pas oublier non plus d'enlever le retour chariot ('\n') dans la chaîne sinon ton algorithme va le mettre n'importe où dans l'autre chaîne et cela sautera une ligne à l'affichage.

Pourquoi deux boucles for ? C'est inutile.

Une seule boucle for avec : text[i]=phrase[strlen(phrase)-i]; suffit amplement.
Et il ne faut pas aller de 0 à 30, mais de 0 à strlen(phrase) +1 (non compris);

Corrige tout ça et s'il y a toujours des problèmes, reposte le code corrigé en prenant soin de le mettre entre deux balises "code" (à droite du bouton souligné).

Et pour info, c'est pas de la cryptographie mais une fonction qui inverse l'ordre des lettes tout simplement ;-))).

Cdlt,

Google is your friend
0
malikat dalam
 
bonjour
merci bcp tu m'as aidé en fait pour le cryptage de chaines c'est demandé dans l'exo de remplacer a par b b par c c par d ... moi j'arrive ps à trouver la syntaxe pour le faire et puis j'ai pensé à ça .
MERCI
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Dans ce cas, ça n'a rien à voir avec ton programme.
Pour décaler les lettres de l'alphabet (a devient b, etc.), il suffit de constater que 'a'+1='b'.
Ce qui donne : texte[i]=phrase[i]+1; dans une boucle for.
Cela ne suffit pas car pour 'z' tu ne viens pas sur 'a'. Il faut donc utiliser le modulo.
A toi de voir comment l'exploiter.
Cdlt,
0
malikat dalam
 
merci bcp
0