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 :

crypter une ligne dans un fichier txt


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Février 2012
    Messages : 1
    Par défaut crypter une ligne dans un fichier txt
    Bonjour! Je fait un programme qui crypte et décrypte des phrases selon la méthode César (par décalage)
    voici ma fonction pour un cryptage sur écran :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    void cryptage() 
    { 
        for (int i=0;i<CHAINE_MAXI;i++) 
        { 
            if (chaineEntree[i]=='\0') break; 
            for (int j=0;j<26;j++) 
            { 
                if (chaineEntree[i]==' ') // NE PAS CODER 
                { 
                    chaineSortie[i]=chaineEntree[i]; 
                    break; 
                } 
                else if (chaineEntree[i]==Alphabet[j] && j+decalage<26) 
                { 
                    chaineSortie[i]=chaineEntree[i]+decalage; // on décale normalement si j+decalage<=25 
                } 
                else if (chaineEntree[i]==Alphabet[j] && j+decalage>=26) 
                { 
                    varAnnuleDecalage=25-j; // sort de l'alphabet 
                    chaineSortie[i]=Alphabet[decalage-varAnnuleDecalage-1]; // on retourne donc au début de l'alphabet en enlevant les lettres passées à la fin de l'alphabet 
                } 
            }	
        } 
    }
    Elle marche parfaitement..........Mais maintenant je doit crypter dans un fichier txt. j'ai déjà inscrit quelque chose à l'interieur, mon programme doit demander le decalage désirée pour allez coder a l'interieur du fichier.
    malheureusement la partie du cours sur les fichiers ma poser beaucoup de problème et je ne comprend plus rien quelqu'un peut m'aider svp ??

  2. #2
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 274
    Par défaut
    Salut ,
    tout d'abord tu te compliques légèrement la vie avec ta fonction crypt, même si ce n'est qu'un détail :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    void cryptage() 
    { 
        for (int i=0;i<CHAINE_MAXI;i++) 
        { 
            if (chaineEntree[i]=='\0') break; 
            for (int decalage=0;decalage<26;decalage++)
            { 
                if (chaineEntree[i]==' ') // NE PAS CODER 
                { 
                    chaineSortie[i]=chaineEntree[i]; 
                    break; //instruction inutile ici
                } 
                else
                {
                    if(chaineEntree[i]>='a'&&chaineEntree[i]<='z')
                        chaineSortie[i] = (chaineEntree[i]+decalage-'a')%26+'a';
                    else if(chaineEntree[i]>='A'&&chaineEntree[i]<='Z')
                        chaineSortie[i] = (chaineEntree[i]+decalage-'A')%26+'A';
                }
            }	
        } 
    }
    Ensuite si tu fais du C++ du devrais utiliser les std::string afin de ne pas t'encombrer de constantes inutiles comme CHAINE_MAXI :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    std::string cryptage(const std::string &chaineEntree, int decalage)
    { 
        std::string chaineSortie = chaineEntree;
        for (int i=0;i<chaineEntree.size();i++) 
        { 
            if(chaineEntree[i]>='a'&&chaineEntree[i]<='z')
                chaineSortie[i] = (chaineEntree[i]+decalage-'a')%26+'a';
            else if(chaineEntree[i]>='A'&&chaineEntree[i]<='Z')
                chaineSortie[i] = (chaineEntree[i]+decalage-'A')%26+'A';
            else
                chaineSortie[i] = chaineEntree[i];
        }
        return chaineSortie;
    }
    Enfin pour utiliser les fichiers cela depend de quelle façon tu places le message dans le fichier, mais il existe une méthode simple qui peut répondre à tes attentes : (en reprenant la fonction précédente)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    std::string cryptage(const std::string &fileName, int decalage)
    { 
        std::ifstream fichierText(fileName.c_str(), std::ios::in);
        std::string chaineEntree;
        std::string chaineSortie;
     
        if(fichierText)
        {
            while(fichierText>>temp) //place le contenu du fichier dans un std::string
                chaineEntree += temp;
     
            chaineSortie = chaineEntree;
            for (int i=0;i<chaineEntree.size();i++) //chiffre le std::string lu dans le fichier
            { 
                if(chaineEntree[i]>='a'&&chaineEntree[i]<='z')
                    chaineSortie[i] = (chaineEntree[i]+decalage-'a')%26+'a';
                else if(chaineEntree[i]>='A'&&chaineEntree[i]<='Z')
                    chaineSortie[i] = (chaineEntree[i]+decalage-'A')%26+'A';
                else
                    chaineSortie[i] = chaineEntree[i];
            }
            return chaineSortie;
        }
        else
            return "FILE not found !";
    }
    Cette méthode place tous les groupes de caractères rencontrés dans une grande chaîne de caractère (ou std::string) et remplace ensuite chaque caractère par sa lettre décalée comme tu le cherches.

    J'espère avoir été suffisamment clair si tu as des questions n'hésite pas

Discussions similaires

  1. récupéré une ligne dans un fichier txt pour mettre dans msgbox
    Par fabrice44 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/02/2008, 14h01
  2. Supprimer une ligne dans un fichier .txt
    Par lince102 dans le forum MATLAB
    Réponses: 12
    Dernier message: 31/01/2008, 10h19
  3. Modifier une ligne dans un fichier txt en java
    Par nihad510 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 09/10/2007, 22h08
  4. Suppression d'une ligne dans un fichier txt
    Par EvaristeGaloisBis dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 21/07/2007, 17h58
  5. suprimmer une ligne dans un fichier .txt
    Par Totuch dans le forum Windows Forms
    Réponses: 1
    Dernier message: 06/06/2007, 11h28

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