begin process at 2012 05 29 15:33:00
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Petit Bug


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Petit Bug

vendredi 12 mars 2004 à 22:51:24 | Petit Bug

LordBob

Membre Club
Bonjour a tous,
voici deux fonctions:
#include <stdio.h>
#include <stdlib.h>

// Variables
char SourceFile[1024];
char DestinationFile[1024];
int choice;

// fonction extraction de fichier
int extract(char Source[1024], char Destination[1024])
{
// variable
int c, c_source, flag=1, count=0, count_end=0;
FILE *fp_destination;
FILE *fp_source;
char *begin = "-----FU-FILE-----"; // 15
char *end = "-----FU-FILE-END-----"; // 19
char *tmp;

tmp = malloc(20);

// ouverture des fichier
if((fp_destination = fopen(Destination, "wb")) == NULL)
{
return 0;
}

if((fp_source = fopen(Source, "rb")) == NULL)
{
return 0;
}

// ici on va extraire le fichier caché
while((c = fgetc(fp_source)) != EOF)
{
if(count == 15 || count == 16)
{
if (count != 15)
{
fputc(c, fp_destination);
}
else
{
count++;
}
}
else
{
if(count <= 15)
{
if(c == begin[count])
{
flag = 0;
count++;
}
else
{
flag = 0;
count = 1;
}
}
}
}

// on ferme les fichiers
fclose(fp_destination);
fclose(fp_source);

// et libere la memoire
free(tmp);

return 1;
}

// fonction de l'integration du fichier
int integration(char Source[1024], char Destination[1024])
{
// variables
int c, c_source;
FILE *fp_destination;
FILE *fp_source;

// ouverture des fichiers
if((fp_destination = fopen(Destination, "a+b")) == NULL)
{
return 0;
}

if((fp_source = fopen(Source, "rb")) == NULL)
{
return 0;
}

// on atteint la fin du fichier
while((c = fgetc(fp_destination)) != EOF)
{
}

// une fois la fin atteint on copie le fichier dans l'autrz
if(feof(fp_destination))
{
fputs("----FU-FILE----", fp_destination);
while((c_source = fgetc(fp_source)) != EOF)
{
fputc(c_source, fp_destination);
}
if(!(feof(fp_source)))
{
return 0;
}
//fputs("----FU-FILE-END----", fp_destination);
}
else
{
return 0;
}

// on ferme les fichiers
fclose(fp_destination);
fclose(fp_source);

return 1;
}

// fonction principale du programme
int main(int argc, char *argv[])
{
int result;

// menu
printf("-------------------\n");
printf("Cyber Stegano v1.0 \n");
printf("-------------------\n");

printf("\n\n1 : Integrer un fichier dans un autre.\n");
printf("2 : Extraire un fichier dans un nouveau.\n");
printf("Votre choix : ");
scanf("%i", &choice);

// ici on va integrer un fichier dans un autre
if(choice == 1)
{
printf("\n\nFichier a integrer : ");
scanf("%s", &SourceFile);

printf("\nFichier \"recevant\" : ");
scanf("%s", &DestinationFile);

printf("\n\nEn cours...");

result = integration(SourceFile, DestinationFile);

if(result == 0)
{
printf("Error !\n\n");
system("PAUSE");
exit(0);
}

printf("\n\nOperation is finish !\n\n");
}
// ici on va extraire un fichier
else if (choice == 2)
{
printf("\n\nFichier contenant le fichier a extraire : ");
scanf("%s", &SourceFile);

printf("\nNom du fichier a extraire : ");
scanf("%s", &DestinationFile);

printf("\n\nEn cours...");

result = extract(SourceFile, DestinationFile);

if(result == 0)
{
printf("Error !\n\n");
exit(0);
}

printf("\n\nOperation is finish !\n\n");
}
else // si aucun choix valide
{
printf("Error !\n\n");
system("PAUSE");
}

system("PAUSE");

return 0;
}


la fonction 'intergration', copie un fichier dans un autre (genre de steganographie)... jusque la tout va bien... la fonction 'extract', quand a elle, enleve le fichier contenue dans l'autre fichier (je c, c pas tres clair !!!), mais seulement, le fichier n'est pas identique...il y a des 'trucs' en plus... je n'arrive pas a trouver l'erreur dans le code, quelqu'un peut m'aider ?
Bob...

"La chance accorde ses faveur aux esprits avertis..."
vendredi 12 mars 2004 à 23:47:43 | Re : Petit Bug

BruNews

Administrateur CodeS-SourceS
Salut LordBob,
le prends pas mal mais ce code ressemble a du VB retranscrit, sera aussi lent. On ne lit ni n'ecrit dans un fichier octet par octet, imagine sur un gros fichier c'est impensable. On ne cherche pas la fin (eof) mais on s'y positionne direct.
Si tu vises win32, va voir dans mes sources comment on procede.

Autre truc, ne fais pas tourner le memory manager pour 20 octets (malloc), prends les sur la pile directement (char buf[20]), tu economiseras des centaines de cycles processeurs.

ciao...
BruNews, Admin CS, MVP Visual C++
samedi 13 mars 2004 à 08:24:48 | Re : Petit Bug

LordBob

Membre Club
je ne le prend pas mal, c'est juste le moyen le plus simple que j'ai trouver !!! mais je vais regarder ce que tu me dit.
Bob...

"La chance accorde ses faveur aux esprits avertis..."
dimanche 14 mars 2004 à 20:33:17 | Re : Petit Bug

LordBob

Membre Club
bon je cherche toujours sur mon code, ce qui ne vat pas, bien que j'ai pas petite idée... mais je n'arrive pas à corriger mon erreur... tu pourrais pas m'aider, car ca doit etre simple pour toi !!!
Bob...

"La chance accorde ses faveur aux esprits avertis..."
dimanche 14 mars 2004 à 20:38:18 | Re : Petit Bug

BruNews

Administrateur CodeS-SourceS
Je ne fais que du win32:
CreateFile
ReadFile
WriteFile
SetFilePointer
SetEndOfFile
CloseHandle
Voila ce dont je me sers, rien que du direct au systeme.

ciao...
BruNews, Admin CS, MVP Visual C++
dimanche 14 mars 2004 à 20:48:16 | Re : Petit Bug

LordBob

Membre Club
ok, c'est pas grave, vais me debrouiller...
merci kan meme !!!
Bob...

"La chance accorde ses faveur aux esprits avertis..."


Cette discussion est classée dans : fichier, source, printf, destination, fp


Répondre à ce message

Sujets en rapport avec ce message

splitter de fichier [ par 24Karas ] salut à tousEn fait je fais un splitter de fichier mais j'ai un probleme. il me rajoute 1 octet sur la découpe et 1 octet par fichier pour la reconsti Les fichiers [ par AngeloVivaldi ] J'utilise la méthode suivante pour copier un fichier vers une destination : FILE * source; FILE * desti; source = fopen(/* blabla */) /* blabla j'arrive pas a ouvrir un fichier [ par angsthase ] Ou doit être placé le fichier texte si je veux l'ouvrir? Voici mon code : int main() {  FILE *fp = fopen ("fichier.txt","r");  if (fp == NULL) Lecture de fichier TXT [ par beb30 ] Voila je souhaite faire un programme en C qui me permette de retrouver une information de type Char rentrée manuellement. Je souhaite aller lire ds un probleme de if [ par cobra176 ] bonjour tout le monde j'ai un code qui me permet d'afficher les lignes dans un fichier contenat les mots que j'ai choisit et si il n'y a pas le mot re Ourvri un fichier sous C via un "drag&drop" de l utilisateur [ par pif56 ] Bonjour tout le monde,Je suis nouveau sur le forum, mais pas sur le site. Alors aujourd'hui est venu le jour de ma premiere question!Voila, j ecris un Où est l'abbhération informatique sur ces ***** de pointeurs [ par MasterShadows ] Salut à tous et à toutes, Je ne sais pas comment j'aurais du nommer le topique mais en fait pouvez vous me dire où est l'abbhération informatique là d au secours comment utliser openPTC avec visual c++ [ par gasy72 ] bonjour             à l'aide je suis un debutant en C/C++ et j'ai un grave problème devant moien fait ,j'essaye de compiler un code source que j'ai tr copie de fichier [ par capifique ] bonjourmon but et de copier le contenu d'un fichier pour le mettre dans un autre fichiermon probleme c'est que ca ne copie que la moitié des donnée.le Erreur de lecture d'un fichier .txt en C sous Linux [ par Trinity_vv ] <TD id=HB_Focus_Element vAlign=top width="100%" background="" height=250 UNSELECTAB


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,167 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales