begin process at 2012 05 29 08:45:37
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

HELP HELP EN C !!!


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

HELP HELP EN C !!!

jeudi 13 mai 2004 à 18:50:27 | HELP HELP EN C !!!

cali1983


Voilà j'ai un problème pour crypter un texte j'ai fais un programme il n'a aucune erreur si ce n'est qu'il veut pas faire ce que je dis.
Il ne veut pas executer la boucle de validation du caractere qui est
while(fscanf(clair,"%c",lec)!=EOF)
{...};
avec clair le fichier
et lec le caractere de ce fichier que je veux crypter.

Voilà mon programme développé en C++ builder
Merci de m'aider j'en peux plus.



#include <stdio.h>
#include <string.h>
#include <alloc.h>
#include <ctype.h> //bibliotheque de travail sur les caracteres


//---------------fonction comptant le nb de caractere dans mon fichier----------
int nbcaractere (FILE *f)
{
char lec; //caractere lu dans le fichier
int nbcar=0;
while(fscanf(f,"%c",&lec)!=EOF) //tant que ce n'est pas la fin du fichier
nbcar++;
printf("Voici le nombre de caractere dans la boucle de comptage : %d\n",nbcar);
return(nbcar);
};


//-------------------fonction verifiant si c'est une lettre---------------------
bool valide(char PAR1)
{
bool ret=0; //faux
int j;
char cha_val[53]={"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"};
for (j=0;j<52;j++)
{
if(cha_val[j]==PAR1)
{
printf("La lettre %c est valide\n",PAR1);
ret=1;
};
};
return ret;
};

//-----------fonction qui determine le rang de ma lettre dans l'alphabet--------
int alphabet(char PAR2)
{
int i,rang;
char alphabetb[27]={"ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
for(i=0;i<26;i++)
{
printf("%c",alphabetb[i]);
if (PAR2==alphabetb[i])
rang=i;
}
printf("essai dans la fonction %d\n",rang) ;
return rang;
};



//------------------------------Début du programme------------------------------
void main(void)
{
int nbcaractere (FILE *f); //declaration des fonctions
bool valide(char PAR1);
int alphabet(char PAR2);

bool vali; //declaration des variables
FILE *clair,*cle,*crypto;
char adresseclair[1000],lec,adressecle[1000],*chaine_clair,*chaine_cle[26],adressecrypto[1000];
int nbcara,i,j,reste,*code_cle[26],ranglettre,paritelettre;

printf("Veuillez taper l'adresse du fichier a analyser\n"); //demande de l'adresse du fichier a analyser
scanf("%s",&adresseclair);
clair=fopen(adresseclair,"r");

if (clair==NULL) //verif que le fichier existe
printf("Le fichier n'existe pas ou n'est pas valide\n");

nbcara=nbcaractere(clair); //recherche du nb de cara du fichier
chaine_clair= (char*)malloc(nbcara); //allocation de memoire pour la chaine en fonction de la taille du fichier
i=0;
while (fscanf(clair,"%c",lec)!=EOF) //traitement de chaque caractere du fichier tant que l'on a pas EOF
{
vali=valide(lec); //verification que ce caractere est une lettre
printf("nb caractere valide %d lettre testee %c\n",i,lec);
if (vali==1)
{
toupper(lec); //transformation en majuscule si c'est une minuscule et laisse tel quel si c'est une majuscule
chaine_clair[i]=lec;
i++;
};
};
nbcara=i; //nouvelle taille du tableau apres suppression des caracteres non valide
reste=nbcara%2;
if(reste==0)
{
chaine_clair[nbcara]=chaine_clair[nbcara+1];
nbcara++;
};
printf("nb de caractere calcule %d\n",nbcara);
for(i=0;i<nbcara;i++)
printf("%c\n",chaine_clair[i]);
fclose(clair);
printf("Veuillez taper l'adresse du fichier contenant la cle\n"); //demande de l'adresse du fichier a analyser
scanf("%s",&adressecle);
cle=fopen(adressecle,"r");
for(i=0;i<52;i++)
{
for(j=0;j<26;j++)
fscanf(cle,"%c",&chaine_cle[i]);
for(j=26;j<52;j++)
fscanf(cle,"%d",&code_cle[i]);
};
fclose(cle);
printf("Veuillez taper l'adresse ou vous voulez enregistrer le cryptogramme\n"); //demande de l'adresse du fichier a analyser
scanf("%s",&adressecrypto);
crypto=fopen(adressecrypto,"w");
for(i=0;i<nbcara;i++)
{
ranglettre=alphabet(chaine_clair[i]);
printf("esssai ranglettre=%d\n",ranglettre);
paritelettre=ranglettre%2;
if(paritelettre==0) //lettre a un rang paire donc cryptage par chiffre
{
printf("%d",code_cle[ranglettre]) ;
fprintf(crypto,"%d",code_cle[ranglettre]);

}
else //lettre a un rang impair donc cryptage par lettre
{
fprintf(crypto,"%c",chaine_cle[ranglettre]);
printf("%c",chaine_cle[ranglettre]);
};
};
fclose(crypto);
getchar();
getchar();
};

jeudi 13 mai 2004 à 21:31:50 | Re : HELP HELP EN C !!!

ymca2003

on donne des pointeurs à scanf et cie :
fscanf(clair,"%c",&lec);

si c'est pour lire un caractère ou un octet, utilise directement fgetc() ou fread();
vendredi 14 mai 2004 à 09:10:57 | Re : HELP HELP EN C !!!

cali1983

Merci mais mon erreur n'etait pas la il fallait tout simplement refermer et reouvrir le programme pour le reinitialiser !!!


vendredi 14 mai 2004 à 09:43:30 | Re : HELP HELP EN C !!!

ensiame

fscanf te renvoie le nombre de champs convertis, donc faut tester 0, pas EOF
vendredi 14 mai 2004 à 12:26:47 | Re : HELP HELP EN C !!!

cali1983


nan nan EOF ca marche mon programme est bon now merci à tous


Cette discussion est classée dans : fichier, chaine, printf, clair, cle


Répondre à ce message

Sujets en rapport avec ce message

calcul du nombre de caractere dans un fichier [ par Pitdeboole ] slt les pro j'ai un peti souci voila ce code est censer creer un fichier puis compte nom le nombre de caractere contenu dans ce fichier y compri les e PROBLEME DElecture d'un fichier [ par africanwinners ] Bonjour tout le monde j'ai fait un code qui permetde lire le contenu d'un fichier. mais il affiche un faux résultat qui ne correspond pas au fichier l calculs tableau [ par 3463 ] Salut à tous !! J'ai besoin de votre aide [^^happy13] Voici mon programme : # include # include # include # include # include # include # incl Tableau C [ par 3463 ] Salut à tous j'ai vraiment besoin de votre aide !! [code=cpp] # include # include # include # include # include # include # include using nam taille d'une chaine extraite d'un fichier [ par aymen87 ] Bonjour Je suis en train de lire à partir d'un fichier ligne par ligne en utilisant fgets, mais avec fgets je doit introduire la longueur maximale d ecriture dans un fichier [ par cacoucatatonique ] bonjours,je me suis mis au laanguage C parcequ'a l'ecole j'ai un cours dessus, et je butte sur une erreur inconue.En faite mon probleme vien du fait q Sauvegarde de fichier géométrique simple dans un fichier sous xp. [ par DeathRavage ] Bonjour à tous j'ai pour projet de développer un programme permetant le dessin de formes géométriques simples et leur sauvegarde dans un fichier.j'ai Probleme gestion fichier [ par jejefull1234 ] Bonjour, alors voila je souhaite réaliser un programme qui va scruter l'arriver de fichier .txt dans un dossier precit, et les copier dans un autre do Distributeur automatique de billets [ par hadhoud206 ] Bonsoir à tous, d'abord je me présente, je m'appelle Hédi, tunisien, étudiant en 1ère année ingénierie de télécommunication. J'ai besoin d'un petit a compter les caractere dans un fichier (espaces inclus) [ par Pitdeboole ] salut à tous je fais mes premiers pas dans le domaine de la programmation j'ai un probleme que j'arrive pas a resoudre: lire un texte au clavier l'enr


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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 : 1,747 sec (4)

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