Encoder/décoder un fichier

Soyez le premier à donner votre avis sur cette source.

Snippet vu 15 443 fois - Téléchargée 38 fois

Contenu du snippet

Voici un petit programme qui permet de voir comment faire pour encoder et/ou décoder un fichier.

Intéressant à voir ! :-)

Source / Exemple :


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

int encode_character(int ch, int val);
int decode_character(int ch, int);

int main (int argc, char *argv[])
{
	FILE *fh;
	int rv = 1;
	int ch =0;
	unsigned int ctr = 0;
	int val = 5;
	char buffer[257];
	char filename[80];
	char action[10];
	char compa[] = "Decoder";
	int x;

	printf("Veuillez tapez le nom du fichier : ");
		gets(filename);

	printf("Veuillez tapez \"Decoder\" pour le decoder ou \"Coder\" pour le coder : ");
		gets(action);

	x = strcmp(action, compa);

	if(x == 0)
	{
		fh = fopen(filename, "r");
		if(fh <= 0)
		{
			printf("\nErreur d'ouverture du fichier en mode r.\n\n");
			rv=-2;
		}
		else
		{
			printf("\n\nLe fichier :\n\n");
			ch = getc(fh);
			while(!feof(fh))
			{
				ch = decode_character(ch, val);
				putchar(ch);
				ch = getc(fh);
			}

			fclose(fh);
			printf("\n\n\nFichier decode et affiche.\n");
		}
	}
	else
	{
		fh = fopen(filename, "w");
		if(fh <= 0)
		{
			printf("\n\nErreur pendant le création du fichier...");
			rv = -3;
		}
		else
		{
			printf("\n\nEntrez le texte a coder. ");
			printf("Entrez une ligne vide pour terminer.\n\n");

			while(gets(buffer) != NULL)
			{
				if(buffer[0] == 0)
					break;

				for(ctr=0; ctr < strlen(buffer); ctr++)
				{
						ch = encode_character(buffer[ctr], val);
						ch = fputc(ch, fh);
				}
			}
			printf("\n\n\nMessage code et enregistre.\n\n");

			fclose(fh);
		}
	}
	return(rv);
}

int encode_character(int ch, int val)
{
		ch = ch+val;
		return (ch);
}

int decode_character(int ch, int val)
{
	ch = ch-val;
	return(ch);
}

Conclusion :


Amusez-vous bien ! :))

A voir également

Ajouter un commentaire

Commentaires

Messages postés
24
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
19 août 2005

Ici :
gets(filename);
Et ici :
gets(action);

Tu ne controle pas la taille de ce que tu rentre il y a risque de buffer overlow non ? (je suis pas sur je debute)

C'est pas mechant et je critique pas mais je vois toujours pas ce que fais cette source au niveau 3 :s
Messages postés
62
Date d'inscription
jeudi 18 avril 2002
Statut
Membre
Dernière intervention
29 septembre 2004

ça ne me plaît pas trop cette addition sans contrôles :( Imagine devoit encoder un fichier qque et qur tu y prenne la valeur maxi d'un int: ton addition fait un overflow et comme ta soustraction est aussi sans contrôles, ....
Messages postés
18
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
24 janvier 2004

le code ne marche que dans un sens : il encode mais ne decode pas
Qui a eu le meme probleme que moi?
Messages postés
51
Date d'inscription
vendredi 7 février 2003
Statut
Membre
Dernière intervention
28 octobre 2004

si mé bon les commentaires ca rend la lecture de la source plus agréable !!
:) bon courage
Messages postés
25
Date d'inscription
lundi 14 janvier 2002
Statut
Membre
Dernière intervention
7 octobre 2002

Des quoi, des commentaires? C'est quoi ca?
Au moins, le code est bien aligné, faut commencer en quelque part mais encore la, on est pas au niveau3 la hein?
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.