Cryptage une chaine de caractères en C
malikat dalam
-
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;
}
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:
- Cryptage une chaine de caractères en C
- Caractères ascii - Guide
- Caractères spéciaux - Guide
- Chaine tnt gratuite sur mobile - Guide
- Plus de chaine tv - Guide
- Chaine radio - Télécharger - Médias et Actualité
1 réponse
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
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
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
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,