Probleme avec une fonction (fseek)

adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 - 31 août 2005 à 00:14
adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 - 31 août 2005 à 15:52
Bonjour alors je vous montre le code le compilateur me di ke ya 2 warnings (missing argument pour mes 2 fonctions j ai essayer avec void mais sa marche pas) A part sa il me di que ya pas d erreurs mais apperemment le prog plante quand il essai de faire la premiere fonction fseek j ai pas trouver ou etai le prob si vous avez une idee ...

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



FILE *ftoc;
FILE *ftow;


char chem[255];
char incle[20];
int msg=0,lcle=0;
char cle=0;
long lmsg;


int main(void)


{



printf("Algorithme de cryptage basé sur 8 bits\nBy adess\n\nEntrez l'emplacement du fichier : ");
gets(chem);


ftoc=fopen(chem, "rb");


printf("\nCrypt key : ");
gets(incle);

//taille du fichier
fseek(ftoc,0,SEEK_END);
lmsg=ftell(ftoc);
lcle=strlen(incle);


char menuc[1];
printf("1 - Crypter\n2 - Decrypter\n");


void crypt(void);
void decrypt(void);


gets(menuc);


if (menuc=="1"){ftow=fopen(strcat(chem,".crypt"),"wb");
crypt;}
else{ftow=fopen(strcat(chem,".decrypt"),"wb");
decrypt;}



printf("\n");


fclose(ftoc);
fclose(ftow);

system("pause");


return 0;


}



/*Cryptage*/
void crypt(void)
{

long a=0;
int car;

while (a!=lmsg);
fseek(ftoc,a,SEEK_SET);
fseek(ftow,a,SEEK_SET);
car=_getw(ftoc);

cle=incle[a%lcle];


car=(car+cle+256)%256;


printf("%d / %d \r",a,lmsg);
_putw(car,ftow);


a++;
}

Merci de vos reponses !
a+

6 réponses

cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 3
31 août 2005 à 09:42
Bonjour,



Attention : gets est a proscrire car pas de controle de debordement. Il faut plutot utiliser fgets.



La condition if (menuc=="1") n'est pas bonne car il faut que tu compares deux chaines de caractères et pour cela tu as strcmp.



Met la déclaration de tes fonctions crypt() et decrypt() après les includes et pas dans le main(), c'est ainsi qu'on procède maintenant.



voila, bon courage.


Matt...
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
31 août 2005 à 10:04
char menuc[1];
1 seul octet, c'est juste la place du 0 final de chaine, où mettras-tu le début de cette chaine ???

ciao...
BruNews, MVP VC++
0
adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 1
31 août 2005 à 14:32
le prob avec fgets est qui me demande un pointeur pour le file (je croi que c un pointeur) mais j ai pas de fichier moi je recupere l entree de l utilisateur a moins que se que je recupere est considéré commen un FILE Donc j ai corrigé comme j ai pu mais le prog ne marche tjs pas

il y a cette erreur dans la fonction fseek() _ASSERTE(str != NULL);

Voila mon code apres correction

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


void crypt(void);
void decrypt(void);


FILE *ftoc;
FILE *ftow;


char chem[256];
char incle[21];
int msg=0,lcle=0;
char cle=0;
long lmsg;


int main(void)


{



printf("Algorithme de cryptage basé sur 8 bits\nBy adess\n\nEntrez l'emplacement du fichier : ");
gets(chem);


ftoc=fopen(chem, "rb");


printf("\nCrypt key : ");
gets(incle);

//taille du fichier
fseek(ftoc,0,SEEK_END); <== il ne depasse pas cette ligne
lmsg=ftell(ftoc);
lcle=strlen(incle);


char menuc[10];
printf("1 - Crypter\n2 - Decrypter\n");


gets(menuc);


if (strcmp(menuc,"1")==0) {ftow=fopen(strcat(chem,".crypt"),"wb");
crypt;}
else{ftow=fopen(strcat(chem,".decrypt"),"wb");
decrypt;}



printf("\n");


fclose(ftoc);
fclose(ftow);

system("pause");


return 0;


}



/*Cryptage*/
void crypt(void)
{

long a=0;
int car;

while (a!=lmsg);
fseek(ftoc,a,SEEK_SET);
fseek(ftow,a,SEEK_SET);
car=_getw(ftoc);

cle=incle[a%lcle];


car=(car+cle+256)%256;


printf("%d / %d \r",a,lmsg);
_putw(car,ftow);


a++;
}

Merci BruNews pour l ASM mais je crois que je vais rester au C pour l instant

a++
0
cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 3
31 août 2005 à 15:22
bonjour,



utilisation de fgets sur l'entrée standard :

fgets(buf, size, stdin)


Matt...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 3
31 août 2005 à 15:30
une autre chose :



ftoc = fopen(chem, "rb");



verifie le pointeur ftoc pour voir s'il est valide :



if(!ftoc)

{

// Il y a un problème...

}

Matt...
0
adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 1
31 août 2005 à 15:52
Mais keske chui .. nan jle dirai pas lol
J essayai d ouvrir un fichier qui n existait pas faudra que je controle si il existe
Merci pour ton aide et pour fgets
+
0
Rejoignez-nous