Xor avec char *
talbsbast
Messages postés
53
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
J'essaie de coder un fonction qui permet de calculer le Xor entre les bits d'une chaîne de caractères, j'ai créé la fonction suivante mais qui marche pas :
void xor_str(char *r, char *s1, char *s2, int l){
int i;
for(i = 0; i < l; i++)
r[i] = s1[i]^s2[i];
}
int main(){
char *s1 = "salut";
char *s2 = "totot";
char *r;
xor_str(r, s1, s2, 5);
printf("%s \n", r);
return 0;
}
Merci pour votre aide, sachant que je suis obliger d'utiliser les pointeurs au lieux de tableau de caractères.
J'essaie de coder un fonction qui permet de calculer le Xor entre les bits d'une chaîne de caractères, j'ai créé la fonction suivante mais qui marche pas :
void xor_str(char *r, char *s1, char *s2, int l){
int i;
for(i = 0; i < l; i++)
r[i] = s1[i]^s2[i];
}
int main(){
char *s1 = "salut";
char *s2 = "totot";
char *r;
xor_str(r, s1, s2, 5);
printf("%s \n", r);
return 0;
}
Merci pour votre aide, sachant que je suis obliger d'utiliser les pointeurs au lieux de tableau de caractères.
A voir également:
- Xor char
- Coco char - Accueil - Réseaux sociaux
- Remplaçant de Coco : quelles solutions pour tchater gratuitement en ligne ? - Accueil - Réseaux sociaux
- If char ✓ - Forum Programmation
- Convertir char en int c ✓ - Forum C
- Char(10) excel francais ✓ - Forum Excel
2 réponses
Bonjour,
En bonne pratique, il vaut mieux nous préciser pourquoi tu penses qu'il y a une erreur.
Ici, vu le code, je pense qu'il s'agit d'un SEGFAULT.
char *r;
Il faut réserver une zone mémoire dans le tas, car sinon tu as écrit au hasard dans la mémoire...
Pour cela, tu peux utiliser malloc (ne pas oublier d'inclure stdlib.h).
Je te conseille également de remplacer tes chiffres 5 par une variable que tu auras probablement calculé via :
De fait, il faut mettre cette instruction après char *s1="salut";
Merci pour la prochaine fois de poster ton code entre deux balises "code c".
Exemple :
<"code c">/*ici je mets mon code*/<"/code"> (sans les guillemets).
Cdlt,
Google is your friend
En bonne pratique, il vaut mieux nous préciser pourquoi tu penses qu'il y a une erreur.
Ici, vu le code, je pense qu'il s'agit d'un SEGFAULT.
char *r;
Il faut réserver une zone mémoire dans le tas, car sinon tu as écrit au hasard dans la mémoire...
Pour cela, tu peux utiliser malloc (ne pas oublier d'inclure stdlib.h).
char *r=malloc(5);
Je te conseille également de remplacer tes chiffres 5 par une variable que tu auras probablement calculé via :
int taille=strlen(s1);
De fait, il faut mettre cette instruction après char *s1="salut";
Merci pour la prochaine fois de poster ton code entre deux balises "code c".
Exemple :
<"code c">/*ici je mets mon code*/<"/code"> (sans les guillemets).
Cdlt,
Google is your friend
Il faut garder un byte pour stocker le '\0'.
Du coup il ne faudra pas oublier de le rajouter manuellement à la fin de ta fonction.