Xor avec char *
talbsbast
Messages postés
61
Statut
Membre
-
fiddy Messages postés 11653 Statut Contributeur -
fiddy Messages postés 11653 Statut Contributeur -
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
- Char(10) excel francais ✓ - Forum Excel
- If char ✓ - Forum Programmation
- Fermeture de Coco : les internautes à la recherche d'un remplaçant - Accueil - Réseaux sociaux
- [C] char ***, char **, char * ? ✓ - Forum C
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.