IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

erreur & vigenere!


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de clio671
    Profil pro
    Développeur Web
    Inscrit en
    Février 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2007
    Messages : 203
    Par défaut erreur & vigenere!
    Bonjour,

    Donc voila je developpe en ce moment l'algo de vigenére en C sous dev C++

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    char Vigenere(char chaine_A_cryptee, char cle_message,int taille_de_la_chaine)
    {
           char *chaine_cryptee[256] ;       
           int i ;
           
           for (i = 0 ; i <= taille_de_la_chaine ; i++)
               chaine_cryptee[i] = chaine_A_cryptee[i] + cle_message[i] - 1 ; //pour le A
           
           return(chaine_cryptee) ;         
    }
    Bon mon algo est bon (j'suis sûr) mais j'ai une erreur à la compil ( ligne en gras ds mon code) :
    subscripted value is neither array nor pointer
    Je ne comprends pas trop mon erreur à priori j'ai bien déclaré mes tableaux
    J'ai cherché sur le forum mais les erreurs ne s'appliquent pas trop à mon cas.

    Je pourrais aussi tt coder dans le main et ça pourrait marcher mais je préfere que ça soit propre
    avec des fonctions.

    Si vous avez des conseils à me donner j'suis preneur !! bye

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char Vigenere(char chaine_A_cryptee, char cle_message,int taille_de_la_chaine)
    ....
               chaine_cryptee[i] = chaine_A_cryptee[i] + cle_message[i] - 1 ; //pour le A
    chaine_A_cryptee et cle_message ne sont pas des tableaux de char mais des char. peut être un erreur dans l'en-tête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char *Vigenere(char  *chaine_A_cryptee, char *cle_message,int taille_de_la_chaine)

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par clio671 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    {
           char *chaine_cryptee[256] ;       
    
           for (i = 0 ; i <= taille_de_la_chaine ; i++)
             [B]  chaine_cryptee[i] = chaine_A_cryptee[i] + cle_message[i] - 1
    et aussi la tu declares un tableau de pointeurs de char, et non un tableau de char ou un poiinteur...

    Si tu veux dupliquer la chaine, tu dois faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    {
           char *chaine_cryptee = strdup(chaine_A_cryptee);       
     
           if ( chaine_cryptee != NULL )
             {
              for (i = 0 ; i <= taille_de_la_chaine ; i++)
                chaine_cryptee[i] = chaine_A_cryptee[i] + cle_message[i] -1;
             }
       return chaine_cryptee ;
    }
    ou si tu veux la modifier sur place, tu te sers juste d'un pointeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    {
           char *p = chaine_A_cryptee ;       
     
              for (i = 0 ; i < taille_de_la_chaine ; i++)
               {
                *p = *p + cle_message[i] -1;
                 p = p + 1 ;
                }
    }
    et la ta fonction peut etre void, car tu retournes dans la meme chaine...

    De plus, je te signale que tu as mis <= taille_de_la_chaine, alors que c'est < .

Discussions similaires

  1. Erreur fréquente avec ASP et IIS
    Par Community Management dans le forum ASP
    Réponses: 2
    Dernier message: 11/02/2004, 22h20
  2. Réponses: 2
    Dernier message: 27/05/2002, 19h46
  3. erreur IDL:omg.org/CORBA/MARSHAL:1.0
    Par Pinggui dans le forum CORBA
    Réponses: 3
    Dernier message: 13/05/2002, 15h05
  4. [Kylix] Erreur objet
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo