PRESQUE
This commit is contained in:
parent
b78ad08856
commit
6b0eccf294
@ -1 +1 @@
|
||||
azertyuiopqsdfghjklmwxcvbn
|
||||
ixbvhdkevteiludzxvpsnpcp
|
@ -1,56 +1,48 @@
|
||||
/*
|
||||
Codage du message
|
||||
On ecrit un programme qui à partir d'un fichier message et
|
||||
d'un fichier clé produira un fichier message_code
|
||||
*/
|
||||
|
||||
/*
|
||||
1. La méthode la plus simple les noms de fichiers sont connus
|
||||
2. On demande le nom des fichiers à l'utilisateur
|
||||
3. Les noms de fichiers sont passés en paramètres sur le ligne de commande
|
||||
*/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include "fonctions.h"
|
||||
|
||||
int codage(int argc, char *argv[]) {
|
||||
FILE *f_m, *f_k, *f_mc; /* strcutures permettant, une fois FOPEN
|
||||
exécuté de recupérer des informations pour manipuler les fichiers
|
||||
en C */
|
||||
|
||||
int c;
|
||||
int k1;
|
||||
int calcul;
|
||||
int count;
|
||||
char cle[100];
|
||||
char * cheminFic_m = "message.txt";
|
||||
char * cheminFic_k = "cle.txt";
|
||||
char * cheminFic_mc = "message_c.txt";
|
||||
|
||||
//1
|
||||
char * cheminFic_m = argv[2];
|
||||
f_m = fopen(cheminFic_m, "r");
|
||||
for (c = getc(f_m); c != EOF; c = getc(f_m))
|
||||
{
|
||||
count = count + 1;
|
||||
}
|
||||
generate(count);
|
||||
/* Traitement erreur */
|
||||
//fclose(f_m);
|
||||
|
||||
//2
|
||||
f_k = fopen(cheminFic_k, "wb");
|
||||
while (f_k)
|
||||
{
|
||||
fwrite(cle, sizeof(char), count, f_k);
|
||||
}
|
||||
fclose(f_k);
|
||||
char * cheminFic_k = argv[3];
|
||||
f_k = fopen(cheminFic_k, "r");
|
||||
/* Traitement erreur */
|
||||
//fclose(f_k);
|
||||
|
||||
//3
|
||||
f_mc = fopen(cheminFic_mc, "wb");
|
||||
char * cheminFic_mc = argv[4];
|
||||
f_mc = fopen(cheminFic_mc, "w");
|
||||
/* Traitement erreur */
|
||||
//fclose(f_mc);
|
||||
|
||||
//f_m = fopen(cheminFic_m, "r");
|
||||
//f_k = fopen(cheminFic_k, "r");
|
||||
//f_mc = fopen(cheminFic_mc, "wb");
|
||||
|
||||
while ((c = fgetc(f_m)) != EOF)
|
||||
{
|
||||
k1 = fgetc(f_k);
|
||||
calcul = (c+k1) % 256;
|
||||
fputc(calcul, f_mc);
|
||||
}
|
||||
|
||||
|
||||
fclose(f_m);
|
||||
fclose(f_k);
|
||||
fclose(f_mc);
|
||||
|
25
prgm/code.c
25
prgm/code.c
@ -6,11 +6,20 @@ int main(int argc, char *argv[]) {
|
||||
FILE *f_m, *f_k, *f_mc; /* strcutures permettant, une fois FOPEN
|
||||
exécuté de recupérer des informations pour manipuler les fichiers
|
||||
en C */
|
||||
int c, count=0;
|
||||
char * cheminFic_m = argv[2];
|
||||
|
||||
int c;
|
||||
int k1;
|
||||
int calcul;
|
||||
int option;
|
||||
f_m = fopen(cheminFic_m, "r");
|
||||
if(f_m==NULL)
|
||||
{
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
for (c = getc(f_m); c != EOF; c = getc(f_m))
|
||||
{
|
||||
count = count + 1;
|
||||
}
|
||||
generate(count, argc, argv);
|
||||
//fclose(f_m);
|
||||
|
||||
/* recupération sur la ligne de commande des noms de fichiers et option (-c pour codage
|
||||
-d pour décodage : message cle message_calculé
|
||||
@ -19,14 +28,14 @@ int main(int argc, char *argv[]) {
|
||||
code -d f1 f2 f3
|
||||
|
||||
*/
|
||||
|
||||
if (argv[1]=="-c"){
|
||||
if(argv[1]=="-c")
|
||||
{
|
||||
codage(argc, argv);
|
||||
}
|
||||
|
||||
else if (argv[1]=="-d"){
|
||||
else if(argv[1]=="-d")
|
||||
{
|
||||
decodage(argc, argv);
|
||||
}
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
@ -9,24 +9,31 @@ int decodage(int argc, char *argv[]) {
|
||||
int k1;
|
||||
int calcul;
|
||||
|
||||
char * cheminFic_m = "message_c.txt";
|
||||
char * cheminFic_m = argv[2];
|
||||
f_m = fopen(cheminFic_m, "r");
|
||||
if (f_m==NULL){
|
||||
printf("L'ouverture du fichier à échouer. Veuillez verifier l'existence de celui-ci.\n");
|
||||
}
|
||||
|
||||
char * cheminFic_k = "cle.txt";
|
||||
char * cheminFic_k = argv[3];
|
||||
f_k = fopen(cheminFic_k, "r");
|
||||
if (f_k==NULL){
|
||||
printf("L'ouverture du fichier à échouer. Veuillez verifier l'existence de celui-ci.\n");
|
||||
}
|
||||
|
||||
char * cheminFic_mdc = "message_dc.txt";
|
||||
char * cheminFic_mdc = argv[4];
|
||||
f_mdc = fopen(cheminFic_mdc, "w");
|
||||
if (f_mdc==NULL){
|
||||
printf("L'ouverture du fichier à échouer. Veuillez verifier l'existence de celui-ci.\n");
|
||||
}
|
||||
|
||||
while ((c = fgetc(f_m)) != EOF)
|
||||
{
|
||||
k1 = fgetc(f_k);
|
||||
calcul = c-k1 >= 0?c-k1:256-(c-k1);
|
||||
fputc(calcul, f_mdc);
|
||||
}
|
||||
|
||||
/*fermeture des fichiers*/
|
||||
fclose(f_m);
|
||||
fclose(f_k);
|
||||
|
@ -3,6 +3,6 @@
|
||||
|
||||
int codage(int argc, char *argv[]);
|
||||
int decodage(int argc, char *argv[]);
|
||||
int generate(int count);
|
||||
int generate(int count, int argc, char *argv[]);
|
||||
|
||||
#endif
|
||||
|
@ -1,18 +1,31 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <string.h>
|
||||
#include "fonctions.h"
|
||||
|
||||
int generate(int count)
|
||||
int generate(int count,int argc,char *argv[])
|
||||
{
|
||||
FILE *f;
|
||||
char cle[count];
|
||||
int a,i;
|
||||
char characteres[26]="azertyuiopqsdfghjklmwxcvbn";
|
||||
srand(time(NULL));
|
||||
for(a=0;a<count;a++)
|
||||
{
|
||||
|
||||
for(a=0;a<(count-2);a++) { /*on fait donc une première boucle*/
|
||||
i = rand()%26;
|
||||
cle[a]=characteres[i];
|
||||
}
|
||||
for (a=1;a<3;a++){
|
||||
i = rand()%26;
|
||||
cle[count-a]=characteres[i];
|
||||
}
|
||||
f = fopen (argv[3], "w");
|
||||
if (f) {
|
||||
fwrite (cle, sizeof(char), count, f);
|
||||
} else {
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
fclose (f);
|
||||
return EXIT_SUCCESS;
|
||||
}
|
148
prgm/main.c
Normal file
148
prgm/main.c
Normal file
@ -0,0 +1,148 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <string.h>
|
||||
|
||||
int decodage(int argc, char *argv[]) {
|
||||
FILE *f_m, *f_k, *f_mdc; /* strcutures permettant, une fois FOPEN
|
||||
exécuté de recupérer des informations pour manipuler les fichiers
|
||||
en C */
|
||||
int c;
|
||||
int k1;
|
||||
int calcul;
|
||||
|
||||
char * cheminFic_m = "message.txt";
|
||||
f_m = fopen(cheminFic_m, "r");
|
||||
if (f_m==NULL){
|
||||
printf("L'ouverture du fichier à échouer. Veuillez verifier l'existence de celui-ci.\n");
|
||||
}
|
||||
|
||||
char * cheminFic_k = "cle.txt";
|
||||
f_k = fopen(cheminFic_k, "r");
|
||||
if (f_k==NULL){
|
||||
printf("L'ouverture du fichier à échouer. Veuillez verifier l'existence de celui-ci.\n");
|
||||
}
|
||||
|
||||
char * cheminFic_mdc = "message_dc.txt";
|
||||
f_mdc = fopen(cheminFic_mdc, "w");
|
||||
if (f_mdc==NULL){
|
||||
printf("L'ouverture du fichier à échouer. Veuillez verifier l'existence de celui-ci.\n");
|
||||
}
|
||||
|
||||
while ((c = fgetc(f_m)) != EOF)
|
||||
/* EOF est une constante obligatoirement
|
||||
négative (elle vaut -1 sous Linux). */
|
||||
{
|
||||
k1 = fgetc(f_k); /* fgetc lis le caractère à la position courante du flux considéré*/
|
||||
calcul = c-k1 >= 0?c-k1:256-(c-k1); /* ?? */
|
||||
fputc(calcul, f_mdc);
|
||||
}
|
||||
|
||||
/*fermeture des fichiers*/
|
||||
fclose(f_m);
|
||||
fclose(f_k);
|
||||
fclose(f_mdc);
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
|
||||
}
|
||||
|
||||
|
||||
int codage(int argc, char *argv[]) {
|
||||
FILE *f_m, *f_k, *f_mc; /* strcutures permettant, une fois FOPEN
|
||||
exécuté de recupérer des informations pour manipuler les fichiers
|
||||
en C */
|
||||
int c;
|
||||
int k1;
|
||||
int calcul;
|
||||
|
||||
char * cheminFic_m = "message.txt";
|
||||
f_m = fopen(cheminFic_m, "r");
|
||||
if (f_m==NULL){
|
||||
printf("L'ouverture du fichier à échouer. Veuillez verifier l'existence de celui-ci.\n");
|
||||
}
|
||||
|
||||
char * cheminFic_k = "cle.txt";
|
||||
f_k = fopen(cheminFic_k, "r");
|
||||
if (f_k==NULL){
|
||||
printf("L'ouverture du fichier à échouer. Veuillez verifier l'existence de celui-ci.\n");
|
||||
}
|
||||
|
||||
char * cheminFic_mc = "message_c.txt";
|
||||
f_mc = fopen(cheminFic_mc, "w");
|
||||
if (f_mc==NULL){
|
||||
printf("L'ouverture du fichier à échouer. Veuillez verifier l'existence de celui-ci.\n");
|
||||
}
|
||||
|
||||
|
||||
while ((c = fgetc(f_m)) != EOF)
|
||||
/* EOF est une constante qui est obligatoirement
|
||||
négative (elle vaut -1 sous Linux). */
|
||||
{
|
||||
k1 = fgetc(f_k);
|
||||
calcul = (c+k1) % 256; /* modulo 256 du caractère qui est entrain d'être lu */
|
||||
fputc(calcul, f_mc); /* fputc permet d'écrire un caractère sur le flux de caractères passé en paramètre*/
|
||||
}
|
||||
|
||||
|
||||
fclose(f_m);
|
||||
fclose(f_k);
|
||||
fclose(f_mc);
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
FILE* fp, *fichier; /* strcutures permettant, une fois FOPEN exécuté de recupérer des informations pour manipuler les fichiers en C */
|
||||
int c, nbrchar;
|
||||
char cle[nbrchar];
|
||||
int a,place;
|
||||
char characteres[26]="abcdefghijklmnopqrstuvwxyz";
|
||||
srand(time(NULL));
|
||||
|
||||
fp = fopen("message.txt", "r"); /*ouvre le fichier*/
|
||||
if (!fp) {
|
||||
printf("Could not open file \n"); /*renvoie une erreur si le nom du fichier est incorrect*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (c = getc(fp); c != EOF; c = getc(fp)){ /*extrait les caractères du fichiers*/
|
||||
// Increment un caractère dans le compteur
|
||||
nbrchar = nbrchar + 1;
|
||||
}
|
||||
|
||||
// Close the file
|
||||
fclose(fp);
|
||||
|
||||
/* !! ATTENTION nbrchar compte 2 caractères de plus que le nombre de caractère visible */
|
||||
|
||||
for(a=0;a<(nbrchar-2);a++) { /*on fait donc une première boucle*/
|
||||
place = rand()%26;
|
||||
cle[a]=characteres[place];
|
||||
}
|
||||
|
||||
for (a=1;a<3;a++){
|
||||
place = rand()%26;
|
||||
cle[nbrchar-a]=characteres[place];
|
||||
}
|
||||
|
||||
fichier = fopen ("cle.txt", "wb");
|
||||
if (fichier) {
|
||||
fwrite (cle, sizeof(char), nbrchar, fichier);
|
||||
} else {
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
fclose (fichier);
|
||||
|
||||
if (argv[1]=="-c"){
|
||||
codage(argc, argv);
|
||||
}
|
||||
|
||||
else if (argv[1]=="-d"){
|
||||
decodage(argc, argv);
|
||||
}
|
||||
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
@ -1 +1 @@
|
||||
txt a encoder
|
||||
txt a encoder stp marche
|
@ -0,0 +1 @@
|
||||
μμΦ<EFBFBD>Ο‹Σ<EFBFBD>ΣΡΪίΦƒήλκ‹ΫΠΤΦαΨ
|
1
prgm/message_dc.txt
Normal file
1
prgm/message_dc.txt
Normal file
@ -0,0 +1 @@
|
||||
txt a encoder stp marche non
|
Loading…
Reference in New Issue
Block a user