Cryptage une chaine de caractères en C

Fermé
malikat dalam - 29 déc. 2010 à 01:12
 malikat dalam - 29 déc. 2010 à 23:16
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 843
Modifié par fiddy le 29/12/2010 à 08:53
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
29 déc. 2010 à 10:05
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 843
29 déc. 2010 à 20:27
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
29 déc. 2010 à 23:16
merci bcp
0