Bonjour!
Je suis en train d'apprendre le C, et voici une erreur de programmation de ma part que je ne comprends pas.
Mon but est de transformer les caractères ascii en binaire. Ma fonction marche plutôt bien quand je lui donne un seul caractère à transformer.
par contre, si je lui donne deux lettres ou plus elle plante et fait quitter le programme.
D’après mes tests, il semble que ce soit strcat() qui pose problème, mais pourquoi?
Ensuite, n'hésitez pas à me donner votre avis sur l'aspect général de ce bout de code. je me doute qu'il doit y avoir plus simple pour transformer un string en binaire, mais je n'ai aucun recul.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
 
 
 
void IntToBin(int n, char *Bin)
{
  // divise par 2 le quotient jusqu'a le mettre a zero
  // on recupere tout les reste et on les mets bout a bout dans un string
 int entier=0;
 char convS[2];
 
 while(n/2!=0){
    // itoa converti un int en string. strcat le demande
    strcat(Bin,itoa(n%2,convS,10));
 
    n=n/2;
    if(n/2==0){
      strcat(Bin,itoa(n%2,convS,10));
      n=-1;
      }
    }
 
// retourne le resultat qui est noté a l'envers par la partie precedente de la fonction
  char retourne [(strlen(Bin))];
  int x = strlen(Bin)-1 ;
 
    for(int i =0; i<(int)strlen(Bin);i++, x--){
    retourne[x]=Bin[i];
    }
  memcpy(Bin, retourne, strlen(Bin));
}
 
 
 
int main (int argc, char* argv[]){
char binaire;
char caractere[50];
errno = 0;
 
printf(" Caracteres?\n");
fgets(caractere, 50, stdin);
 
int x =0;
while(x<(int)strlen(caractere)-1){
 
IntToBin(caractere[x],&binaire);
x=x+1;
}
 
system("PAUSE");  /* Pour la console Windows. */
return 0;
}