C Aide code error

Bonjour, dans le but d'une réalisation d'un programme permettent de décrypter des psedo et des pass sous forme : 65_52_14_<>_36_65_14.

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

int main()
{
char psedo[20] ="";
char pass[20] ="";
char code[200] = "";
int classePsedo = 0;
int classePass = 0;
char partie =0;
int i,e,a;
printf("Enter the code : ");
scanf("%s", code);
i = 0;
e = 0;
a = 0;
while(1)
{
if(code[i]=="_")
{
i++;
classePass=0;
classePsedo=0;
}
else if(code[i]=="<")
{
i++;i++;
partie = 1;
}
else if(code[i]=="/0") i=9999;
else
{
if(partie = 0)
{
while(code[i]!="_"&&code[i]!="<"&&code[i]!=">")
{
switch(classePsedo)
{
case 1 :
psedo[e]*= 10;

case 2 :
psedo[e]*=100;

default :
psedo[e]+= code[i];
}
classePsedo++;
i++;
}
}
else
{
while(code[i]!="_"&&code[i]!="<"&&code[i]!=">")
{
switch(classePass)
{
case 1 :
pass[a]*= 10;

case 2 :
pass[a]*=100;

default :
pass[a]+= code[i];
}
classePass++;
i++;
}
}
}
i++;
}
printf("\n%s___%s", psedo, pass);
system("PAUSE");
return 0;

C:\Users\marc\Desktop\Aplications en C\SteamDecrypter\main.c||In function `main':|
C:\Users\marc\Desktop\Aplications en C\SteamDecrypter\main.c|20|warning: comparison between pointer and integer|
C:\Users\marc\Desktop\Aplications en C\SteamDecrypter\main.c|26|warning: comparison between pointer and integer|
C:\Users\marc\Desktop\Aplications en C\SteamDecrypter\main.c|31|warning: comparison between pointer and integer|
C:\Users\marc\Desktop\Aplications en C\SteamDecrypter\main.c|34|warning: suggest parentheses around assignment used as truth value|
C:\Users\marc\Desktop\Aplications en C\SteamDecrypter\main.c|36|warning: comparison between pointer and integer|
C:\Users\marc\Desktop\Aplications en C\SteamDecrypter\main.c|36|warning: comparison between pointer and integer|
C:\Users\marc\Desktop\Aplications en C\SteamDecrypter\main.c|36|warning: comparison between pointer and integer|
C:\Users\marc\Desktop\Aplications en C\SteamDecrypter\main.c|55|warning: comparison between pointer and integer|
C:\Users\marc\Desktop\Aplications en C\SteamDecrypter\main.c|55|warning: comparison between pointer and integer|
C:\Users\marc\Desktop\Aplications en C\SteamDecrypter\main.c|55|warning: comparison between pointer and integer|
||=== Build finished: 0 errors, 10 warnings ===|

Quand je lance le programme sa me demende le code et sa plante ! help me ! merci de votre aide
Configuration: Window Vista 32bits
Intel core 2 duo E4400
ATI Radeon HD 2400
3GO de RAM

13 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Un boulet "savant" qu'il en est un l'est un peu moins !

    ooh.. purée.. on dis "sachant" !
    1. cherche pas mème si tu trouve t'on ordi n'est pas assé puissant pour ce tipe de logiciel
      1. Contributeur
        Très juste ! De plus, je viens de me rendre compte que nous aidons un pirate... ce que notre charte interdit formellement ! Nous devrions le signaler aux modos..
        1. Contributeur
          N'empeche que... ! Nous ne pouvons pas savoir pourquoi tu utilise ce logiciel...
          1. Contributeur
            "programme permettent de décrypter des psedo et des pass "
            1. je veut juste faire passer des psedo et des pass par msn ou autre sans risque que quelqu'un les intercepte et s'en serve
              1. oui mais c'est moi qui ait pense le système de cryptage c'est pur les crypter et que mon correspondant les décrypte
                1. je crois que la bibilothèque de #include<conio.h> t'en manque!!
                  1. Contributeur
                    Non, ce n'est pas conio.h qui manque. Conio.h c'est lorsque tu utilises des fonctions spécifiques à windows.

                    Cdlt
                2. Contributeur
                  Salut,
                  Pour les autres : Il a bien le droit de se concevoir son propre système de chiffrement...
                  Les mots de passe de toute façon sur les systèmes ne sont pas chiffrés mais hacher, donc rien à voir avec son algo.

                  Sinon pour vengeurstrike :

                  if(code[i]=="_")
                  Attention tu compares un char avec une chaîne de caractères ("_"). Pour comparer avec un char, il faut le mettre entre apostrophes (code[i]=='_';)
                  De même pour les autres if.

                  pass[a]*= 10;
                  Attention, à ne pas dépasser la limite maximale d'un char. Tu peux utiliser le modulo pour ça (%).

                  code[i]=="/0")
                  /0 ? \0 caractère de fin de chaîne plutôt non ? Pareil entre apostrophe.

                  J'ai vite fait regarder, il y a sûrement d'autres erreurs, tiens moi au courant ;-))).
                  1. merci je vais modifier sa tout de suie et je te donne le resultat
                    1. #include <stdio.h>
                      #include <stdlib.h>

                      int main()
                      {
                      char psedo[20] ="";
                      char pass[20] ="";
                      char code[200] = "";
                      int classePsedo = 0;
                      int classePass = 0;
                      char partie =0;
                      int i,e,a;
                      printf("Enter the code : ");
                      scanf("%s", code);
                      i = 0;
                      e = 0;
                      a = 0;
                      while(1)
                      {
                      if(code[i]=='_')
                      {
                      i++;
                      classePass=0;
                      classePsedo=0;
                      }
                      else if(code[i]=='<')
                      {
                      i++;i++;
                      partie = 1;
                      }
                      else if(code[i]=='\0') i=9999;
                      else
                      {
                      if(partie = 0)
                      {
                      while(code[i]!='_'&&code[i]!='<'&&code[i]!='>')
                      {
                      switch(classePsedo)
                      {
                      case 1 :
                      psedo[e]*= 10;

                      case 2 :
                      psedo[e]*=100;

                      default :
                      psedo[e]+= code[i];
                      }
                      classePsedo++;
                      i++;
                      }
                      }
                      else
                      {
                      while(code[i]!='_'&&code[i]!='<'&&code[i]!='>')
                      {
                      switch(classePass)
                      {
                      case 1 :
                      pass[a]*= 10;

                      case 2 :
                      pass[a]*=100;

                      default :
                      pass[a]+= code[i];
                      }
                      classePass++;
                      i++;
                      }
                      }
                      }
                      i++;
                      }
                      printf("\n%s___%s", psedo, pass);
                      system("PAUSE");
                      return 0;

                      }

                      C:\Users\marc\Desktop\Aplications en C\SteamDecrypter\main.c||In function `main':|
                      C:\Users\marc\Desktop\Aplications en C\SteamDecrypter\main.c|34|warning: suggest parentheses around assignment used as truth value|
                      ||=== Build finished: 0 errors, 1 warnings ===|


                      pareil la code plante
                      1. Contributeur
                        Tu as une autre erreur.
                        if(partie = 0) est équivalent à : partie=0; if(0)
                        L'opérateur de comparaison en C est le double égal. Le simple égal est réservé à l'affectation.

                        Par contre, je n'ai pas regardé en détail ton algorithme. Mais j'ai l'impression qu'il n'est pas très propre et que ça va faire un segmentation fault^^.

                        Tiens moi au courant si c'est le cas ;-).