Cryptage en c++

Etant débutant en c++, j’essaye de me faire un pti prog de cryptage avec XOR…
Je mets la boucle

char texte[256];
char code[256];
int key;

for(int n ; n<strlen(texte) ; n++)
{
code[n]=texte[n];
}

cout<<code

Le problème: ca crypte et décrypte normalement les mots mais dès que j’introduis un espace dans la chaine de caractère, paf ca arrete le cryptage et j’ai que le premier mot de ma chaine.
Autre chose si je mets cette boucle dans une autre (ici: do while): aucun prob avec un mot mais dès qu’il y a un espace, la boucle ne s’arrete jamais malgré les conditions ou les cin>> .

A mon avis, on ne va pas pouvoir t’aider sans examiner le reste du code… S’il n’est pas trop gros, recopie-le ici, sinon place-le sur un site web quelque part et file-nous le lien.

Voila le code en entier j’espère que ca vous aidera
je sais il y a surement pleins d’erreurs de newbie mais bon j’en suis un.

#include <iostream.h>
#include <string.h>

main()
{

int choix;
int key;
int n;
char txt[256];
char nvtxt[256];    //256 paske je crois que c’est la limite de char[]

do
 {
 cout<<“1. (d&#8218crypter
0. quitter
”;
 cin>>choix;

 switch (choix)
  {
  case 1:
  cout<<“
Entrer le texte … (d&#233crypter (max 256 caractères):
”;
  cin>>txt;
  cout<<"

Entrer la clé:
";
  cin>>key;
  for(n=0;n<strlen(txt);n++)
{
nvtxt[n]=txt[n]^key;
}
  cout<<"
Texte crypté:

“<<nvtxt<<”
";
  break;

  case 0:
  cout<<“Terminé”;
  goto end;

  default:
  cout<<“Mauvais choix
”;
  break;

 }

 }while (choix!=0); //boucle dont j’ai parlé précédemment

end:
return 0;
}

Pour le texte, je te conseille de passer par un cin.get(txt, 256); au lieu de cin >> txt; car le 2e s’arrêtera à l’espace effectivement.
(MSDN)
Ce message a été édité par xentyr le 27/12/2003

Désolé de passer un peu pour un intégriste, mais quitte à faire du C++, autant en exploiter au mieux toute la puissance, en appliquant par exemple ce principe : “utilisez des std::string à chaque fois que possible, et des char[] uniquement si c’est nécessaire”.

Moi-même j’ai longtemps continué à utiliser des char[] à la place des std::string et je réalise seulement maintenant avec le recul tout le temps que j’ai perdu à réinventer la roue, et à débugger des débordements mémoire stupides.

La STL est ton amie, et même si ça a l’air bien chiant à apprendre au début ( moi ça m’a fait cet effet là ) , quand on a vraiment compris toute la puissance de cet outil, on ne peut plus vivre sans. Il est vrai que si tu débutes, tu n’est pas forcé de te taper douze bouquins de C++ avant de commencer à coder, mais ne fais pas comme moi j’ai fait, ne te dis pas : “ok, je pense que j’en sais assez pour maintenant, je verrai la STL plus tard”.

edit : sotd (smiley of the death)
Ce message a été édité par Drealmer le 27/12/2003

Je passais par la et j’ai vu un barbarisme, alors je me suis arrete:

On dit “chiffrement” en francais. Voila voila

Sinon, d’ou tu sors que la limite de char est 256? pourquoi pas 42?

LoneWolf

2^8 est la limite ASCII 8 bits :P;;

[quote]La STL est ton amie, et même si ça a l’air bien chiant à apprendre au début ( moi ça m’a fait cet effet là ) , quand on a vraiment compris toute la puissance de cet outil, on ne peut plus vivre sans. Il est vrai que si tu débutes, tu n’est pas forcé de te taper douze bouquins de C++ avant de commencer à coder, mais ne fais pas comme moi j’ai fait, ne te dis pas : “ok, je pense que j’en sais assez pour maintenant, je verrai la STL plus tard”.[/quote]ah Drealmer, t’es un frère toi. en lisant la question hier soir avant qu’il commence à y avoir des réponses, j’ai eu le même raisonnement.
j’ai pas voulu faire mon gros chieur avec la stl, mais, c’est clair, c’est tout du bon. faire du tableau statique, c’est la préhistoire.

perso aujourd’hui, j’ai du mal à concevoir qu’on puisse parcourir quelque chose sans itérateurs… 

Ok merci pour les conseils. Sinon le char[256] je crois que j’ai du le lire quelque part…