- Totu,
Bonjour, je souhaiterai transformer ma chaine de caractère en décimal avec quelques tests pour savoir si le caractère est une lettre par exemple. Le soucis est un problème de mémoire : "L’état de la mémoire de peut pas être read". Voici mon code :
#include<stdio.h>
// décalage de caractère
char plusLoin(char c, int n){
return c+n;
}
// Test pour savoir si le caractère est une lettre de l'alphabet (minuscule et majuscule)
int estLettre(char c){
if(((c>='a') && (c<='z')) || ((c>='A') && (c<='Z'))){
return 1;
}
else{
return 0;
}
}
// S’il s’agit d’une lettre, elle l’enregistre dans un tableau de caractères, sinon elle enregistre un espace dans le tableau
char SaisirTableau(char * T, int n){
char * TRes = malloc(n*sizeof(char));
int i;
char free;
for(i=0;i<n;i++){
free=getchar(); //vider le tampon après un scanf
if(estLettre(T[i]) == 1){
TRes[i] = T[i];
}
else{
TRes[i] = ' ';
}
}
return TRes;
}
// fonction de conversion d'un caractère en décimal
int * Conversion(char * T, int n){
int *Tint = malloc(n*sizeof(int));
int i=0;
while(i<n){
Tint[i] = T[i];
i++;
}
return Tint;
}
// Utilisé pour main
void Codage2(char * T, int n){
int i, distance;
int * Tab_ASCII = malloc((n+1)*sizeof(int));
Tab_ASCII = Conversion(SaisirTableau(T[i],n), n);
printf("Donner la distance : ");
scanf("%d", &distance);
printf("Chaine apres le chiffrage : ");
for(i = 0; i<n ;i++){
printf("%d",plusLoin(Tab_ASCII[i], distance));
}
Tab_ASCII[i] = '\0';
}
int main () {
int n=13;
char chaine[] = "Mot!de#passe?"; //déclaration chaine de caractères
printf("Chaine avant le chiffrage : %s\n", chaine); //affichage message + chaine (comme codage 1)
Codage2(chaine, n); // appel de la fonction codage2 qui transforme le message en suite de chiffre correspondant à la table ascii
}
Merci d’avance pour vos réponses
+0
-0