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 :

utiliser un buffer


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 30
    Par défaut utiliser un buffer
    voila j'ai un code mais qui utilise un tableau
    le voila :
    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
    void cip(unsigned IN[5],unsigned OUT[5],unsigned Z[7][10]) 
    {
    	unsigned r,x1,x2,x3,x4,kk,t1,t2,a;
    	x1=IN[1]; x2=IN[2]; x3=IN[3]; x4=IN[4];
    	for(r=1;r<=8;r++) 			/* les etapes */
    	{
    			/* le groupe d'operation effectuer sur le bloc de 64bits */
    	x1 = mul(x1,Z[1][r]);		x4 = mul(x4,Z[4][r]);
    	x2 = (x2 + Z[2][r]) & one;	x3 = (x3 + Z[3][r]) & one;
     
    	kk = mul(Z[5][r],(x1^x3));
    	t1 = mul(Z[6][r],(kk+(x2^x4)) & one);
    	t2 = (kk+t1) & one;
    			/* la permutation */
    	x1 = x1^t1;		x4=x4^t2;
    	a  = x2^t2;		x2=x3^t1;	x3=a;
     
    	printf("\n\t%1u-th rnd %6u\t%6u\t%6u\t%6u",r,x1,x2,x3,x4);
    	}
     
    		/* operation de sortie du bloc de 64bits crypter */
    	OUT[1] = mul(x1,Z[1][etape+1]);
    	OUT[4] = mul(x4,Z[4][etape+1]);
    	OUT[2] = (x3+Z[2][etape+1]) & one;
    	OUT[3] = (x2+Z[3][etape+1]) & one;
    }
    alors moi je veut pointer IN[x] et OUT[x] vers un buffer qui fait la lecture dans un fichier

  2. #2
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 123
    Par défaut
    c'est possible d'avoir un peu plus d'explication......?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 30
    Par défaut
    je pense que je l'ai trouver voila le code que j'ai ecrit:
    on doit lire un fichier et copier les valeur dans le tableau XX[x] est dans chaque case 2 caractéres
    je ne sait pas si c'est bon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /*saisie des caracteres dans le tableau XX (16 bits dans chaque case)*/
    void saisie_du_caractere(void)
    	{
    		int x;
    		unsigned XX[4],TMP[8];
    		for(x=1;x<=8;x++) tmp[x]=fgetc(fichier_a_lire);
    	XX[1]=tmp[1]&tmp[2];XX[2]=tmp[3]&tmp[4];XX[3]=tmp[5]&tmp[6];XX[4]=tmp[7]&tmp[8];
    	fin_fichier = tmp[8];
        }

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 123
    Par défaut
    Citation Envoyé par monalisa_dulouvre
    je pense que je l'ai trouver voila le code que j'ai ecrit:
    on doit lire un fichier et copier les valeur dans le tableau XX[x] est dans chaque case 2 caractéres
    je ne sait pas si c'est bon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /*saisie des caracteres dans le tableau XX (16 bits dans chaque case)*/
    void saisie_du_caractere(void)
    	{
    		int x;
    		unsigned XX[4],TMP[8];
    		for(x=1;x<=8;x++) tmp[x]=fgetc(fichier_a_lire);
    	XX[1]=tmp[1]&tmp[2];XX[2]=tmp[3]&tmp[4];XX[3]=tmp[5]&tmp[6];XX[4]=tmp[7]&tmp[8];
    	fin_fichier = tmp[8];
        }
    je vois qu'une merde dans ton code...tu déclares le tableau TMP[8], donc un tableau de 8 unsigned, dans ce cas dans ta boucle for, commences à x=0 et fini à x<8, ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(x=0;x<8;x++) tmp[x]=fgetc(fichier_a_lire);
    sinon il va écrire dans une zone mémoire qu'il lui et pas réservé et ça c'est un plantage à retardement....


  5. #5
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Effectivement, tmp[8] se situe à l'extérieur du tableau. Par ailleurs, j'ai du mal à saisir le but que tu recherches avec ta fonction saisie de caractère et surtout avec les comparaisons bit-à-bit.

    A part cela, j'ai un commentaire sur la présentation de ton code qui en l'état n'est pas très lisible. De manière générale, essaie d'indenter soigneusement ton code et de te limiter à une instruction par ligne. Outre le confort que cela procure aux personnes qui seront amenées à devoir lire ton code, cela te permet de clarifier la vision que tu as de ton programme et de dénicher les erreurs potentielles plus facilement.

    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
     
    void saisie_du_caractere(void)
    {
        int i; /* Indice de boucle, je préfère i à x, car XX[x] c'est pas très lisible*/
        unsigned XX[4];
        unsigned tmp[8];
        for(i = 0; i < 8; ++i)  /* Ici, je me suis permis de corriger ta condition de sortie */
        {
            tmp[i]=fgetc(fichier_a_lire);
        }
        /* Idem, XX[4] n'existe pas, les indices varient entre 0 et longueur-1*/
        for (i = 0; i < 4; ++i)
        {
            XX[i] = tmp[2*i] & tmp[2*i+1];
        }
    }
    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 30
    Par défaut
    la c'est du pro ,châpeau
    pour repondre a ta question c'est pour réaliser un programme de cryptage en utilisant l'algorithme IDEA
    c'est pour ca que je découpe
    mais j'ai un autre probleme :
    comment ecrire les données sur le fichier de sortie puisqu'a la sortie du cryptage on a un tableau YY qui a 64bits découper en 16bits dans chaque case (en code ASCII)?

  7. #7
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Je ne connais pas du tout le cryptage que tu désires réaliser. En ce concerne l'écriture de ton tableau YY 4x16bits, je dirais naïvement que le plus simple est de représenter chaque valeur dans un fichier texte en les séparant par des virgules.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  8. #8
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par monalisa_dulouvre
    alors moi je veut pointer IN[x] et OUT[x] vers un buffer qui fait la lecture dans un fichier
    Et ta question, c'est que tu voudrais savoir comment réaliser la lecture à partir d'un fichier?

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment utiliser un buffer dans java
    Par javadz dans le forum AWT/Swing
    Réponses: 0
    Dernier message: 24/02/2014, 19h54
  2. Comment utiliser le buffer-z ?
    Par Voldemort09 dans le forum OpenGL
    Réponses: 3
    Dernier message: 01/12/2008, 00h54
  3. Méthode de dessin (utilisation des buffers)
    Par mister3957 dans le forum DirectX
    Réponses: 2
    Dernier message: 07/03/2008, 12h36
  4. Utilisation Double Buffering?
    Par Jarro dans le forum C#
    Réponses: 7
    Dernier message: 27/02/2008, 09h39
  5. Utilisation des buffers
    Par Yoshidu62 dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 30/05/2007, 19h51

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