Remplacer une lettre par une autre

shadow1779 Messages postés 706 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2013 - 8 nov. 2005 à 16:56
Poufine Messages postés 5 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 10 novembre 2005 - 12 nov. 2005 à 03:18
bonjour,

j'vai prendre un exemple simple pour illustrer mon programme,

je fais un gets(buffer); et ensuite un printf("%s",buffer); admettons que j'ai tapé "a" lors du gets, je veux que la chaine buffer ai en fait "d" par exemple comment puis je faire ,??

5 réponses

jul39dole Messages postés 117 Date d'inscription mardi 22 juillet 2003 Statut Membre Dernière intervention 21 janvier 2011
8 nov. 2005 à 17:00
tu écris buffer[0]='d'; entre tes deux instructions. Mais je n'ai peut être pas compris toute la finesse de la question...
0
shadow1779 Messages postés 706 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2013
8 nov. 2005 à 17:06
en gros c'est pour faire un systeme de cryptage tout basique, qui serait d'inverser des lettre ou les remplacer par des caracteres speciaux,

genre a = r
b = c ...
.
0
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
8 nov. 2005 à 19:20
Tu te fais un tableau de correspondance.



struct SCorrespondance:

{

char cCaractere;

char cRemplaçant;

}



Ensuite tu analyses caractere par caractere ta chaine et tu remplaces si le caractere a une correspondance.

Attention de ne pas faire 2 remplacement.

Il te faut un tableau de la meme taille que la chaine de caractere pour savoir lesquels tu as remplacé.
0
marik7335 Messages postés 115 Date d'inscription samedi 27 décembre 2003 Statut Membre Dernière intervention 11 mai 2009
9 nov. 2005 à 16:31
tu parcours ta chaine et grâce une table de correspondance tu remplaces simplement à l'index adéquat.
tu peux coder une structure du type :

en reprenant ce qu'a dit Galmiza tu codes une structure de la manière suivante :

struct SCorrespondance:
{
char cCaractere;
char cRemplaçant;
}

puis un tableau de struct SCorrespondance de 26 éléments : struct SCorrespondance lettres[26]; //pour les 26 lettres

pour trouver l'index de la lettre :
tu utilises un masque qui te reverra 1 pour A, 2 pour B etc ... (pour celà il faut mettre à zero les bits à gauche)
tu peux l'implémenter de la manière suivante : ( (int) lettre & 0x0F )

exemple pour A : code ASCII (65) :
1000 0001 et 0000 1111 = 0000 0001

int indice = ( (int) lettre & 0x0F );
lettres[code-1] pour trouver la lettre;
0

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

Posez votre question
Poufine Messages postés 5 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 10 novembre 2005
12 nov. 2005 à 03:18
Je viens de retrouver mon premier programme (qui n'est pas si vieux que ca ):

en esperant que ca t'aidera....

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


int main(int argc,char **argv) {
FILE *fileSource, *fileDest;
char c;
int length;
if (argc != 4) {
printf("Usage : prog fileSource fileDest 1/0 \n");//1 pour coder 0 pour decoder ou l'inverse comme tu veux
exit(-1);
}



char source[]="abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ'";
char code[] ="qwertyu iopasdfghjklzxcvbnmPOIUYTREWQLK'JHGFDSAMNBVCXZ";



fileSource = fopen(argv[1],"r");
fileDest = fopen(argv[2],"w");


if (!(fileSource && fileDest)) {
fprintf(stderr,"Probleme d'ouverture de fichier\n");
exit(-1);
}


if(atoi(argv[3]))
{
while((length = fread(&c,sizeof(char),1,fileSource)) != 0) {
int i=0;
while(c!=source[i] && i<strlen(source))
i++;

char d;
if(i!=strlen(code))
d=code[i];
else
d='!';
fwrite(&d,sizeof(char),1,fileDest);
}
}
else
{
while((length = fread(&c,sizeof(char),1,fileSource)) != 0) {
int i=0;
while(c!=code[i] && i<strlen(code))
i++;


char d;
if(i!=strlen(code))
d=source[i];
else
d='!';
fwrite(&d,sizeof(char),1,fileDest);
}
}
fclose(fileSource);
fclose(fileDest);


printf("\tUn fichier codé\n");


return 0;
}
0
Rejoignez-nous