Besoin pour probleme code de cesar

Signaler
Messages postés
3
Date d'inscription
mardi 25 mars 2008
Statut
Membre
Dernière intervention
26 mars 2008
-
Messages postés
3
Date d'inscription
mardi 25 mars 2008
Statut
Membre
Dernière intervention
26 mars 2008
-
Bonjour, a tous je commence dans le langage C et j'ai codé un programme sur la base du code de cesar :

#include <stdio.h>
#include <stdlib.h>


static void purger(void)
{
    int c;


    while ((c = getchar()) != '\n' && c != EOF)
    {}
}


int main(void)
{
    char texte[255] ;
 char codage[255] ;
 long nbrdecalage  ;
 long util = 1 ;
 long i=0 ;
    printf("                          ***********************\n");
    printf("                             ******  Bonjour  ******\n");
 printf("                             ***********************\n\n\n");
 printf("Bienvenue dans le programme de cryptage et de decryptage d'une phrase\n\n");
 printf("Choisissez :\n\n");
 printf("1-Cryptage\n\n");
 printf("2-Decryptage\n\n");
 scanf("%ld", &util);
 printf("\n");
if (util == 1)
{
  printf("Bienvenue dans le programme de cryptage d'une phrase\n\n");
  printf("Choisissez votre decalage :\n\n");
  scanf("%d", &nbrdecalage);
  printf("\n");
  purger();
  printf("Saisissez votre texte\n\n");
  fgets(texte,sizeof texte ,stdin);
   for(i=0;texte[i]!='\0';codage[i] = (texte[i]+nbrdecalage)%256,i++) ;
  printf("Voici le message crypte :\n\n\t%s", codage);
  printf("\n");


 




}
else if (util == 2)
{
  printf("Bienvenue dans le programme de decryptage d'une phrase\n\n");
  printf("Choisissez votre decalage :\n\n");
  scanf("%d", &nbrdecalage);
  printf("\n");
  purger();
  printf("Saisissez votre texte\n");
  fgets(texte,100 ,stdin);
   for(i=0;texte[i]!='\0';codage[i] = (texte[i]-nbrdecalage)%256,i++) ;
  printf("Voici le message crypte :\n %s", codage);
  printf("\n");




}
else
{
printf("Redemarrez le programme & choisissez une option valide\n\n");
}


    system("PAUSE");
 return 0;
}

Le probleme est que quand je rentre une phrases des caratères s'affiche a la fin du resultats du codage
http://www.hostingpics.net/viewer.php?id=719635prog.jpg
Si quelqun pouvait m'aider ^^
merci d'avance
A voir également:

4 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
C'est juste que tu oublies de copier le '\0' dans le résultat

for(i=0;texte[i]!='\0';codage[i] = (texte[i]+nbrdecalage)%256,i++) ;

->

for(i=0; texte[i]; i++)
{
    codage[i] = (texte[i]+nbrdecalage)%256; // Ca sert a rien de tout mettre dans le for, et c'est illisible
}
codage[i] = 0;
_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
3
Date d'inscription
mardi 25 mars 2008
Statut
Membre
Dernière intervention
26 mars 2008

Merci la reponse rapide mais le probleme est toujours present
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009

1) Remplacer les fgets() par gets().
2) Ajouter les zéros binaires à la fin des chaînes codées.
3) Ne pas mélanger les gestions de boucles avec le traitement des boucles !

      printf("Saisissez votre texte\n\n");
      gets(texte);
      for (i=0 ; texte[i]!=0 ; i++)
         codage[i] = (texte[i] + ou - nbrdecalage) % 256;
      codage[i] = 0;

4) Et attention au cas où le résultat du modulo 256 donnera un zéro binaire !

Jean-François
Messages postés
3
Date d'inscription
mardi 25 mars 2008
Statut
Membre
Dernière intervention
26 mars 2008

Merci bc sa marche