IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Problème de découpage d'une chaîne de caractères


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de PoelQ
    Homme Profil pro
    Étudiant Exia.Cesi
    Inscrit en
    Janvier 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant Exia.Cesi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 22
    Par défaut Problème de découpage d'une chaîne de caractères
    Bonjour à tous, après avoir planché une partie de l'après-midi sur ce problème, je viens demander de l'aide.

    Alors voici mon problème : J'ai une fonction qui me permet de convertir un caractère en son code ASCII, son code ASCII est ensuite envoyé dans une fonction qui transforme le code ASCII du caractère en binaire, puis transforme le binaire en une chaîne de caractères de 0 et de 1. Mais il y a des caractères spéciaux au début de ma chaîne. J'ai essayé de les enlever en copiant la chaîne à partir de l'indice après les caractères mais dans cette nouvelle chaîne, j'ai encore des caractères spéciaux.

    Voici un exemple de sortie de mon programme :

    (On convertit C en son code ASCII puis on affiche le binaire)
    En binaire : 1000011
    m1000011 (qui correspond à la chaîne de caractères)
    ?²?1000011 (qui correspond à la copie de la chaîne de caractères)

    Je ne suis pas très familier encore avec les chaînes de caractères, j'ai peut être fait une erreur de débutant. Voici mon code :
    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
     
    void binaire(int nb)
    {
        int t[7], i = 0, k=0;
        char* self;
        self = malloc(sizeof(int)*7);
        char tmp[10];
        char selftmp[7];
     
        do{
            t[i] = fmod(nb,2);
            nb = nb/2;
            i++;
            k++;
        }while(nb != 0);
     
        printf("En binaire : " );
     
        for(i = k-1; i >= 0; i--)
        {
            printf("%d",t[i]);
            sprintf(tmp, "%d", t[i]);
            strcat(self, tmp);
        }
        printf("\n%s\n", self);
     
        for (int i = 1; i<8; i++)
        {
        	sprintf(tmp, "%c", self[i]);
        	strcat(selftmp, tmp);
        }
     
        printf("%s\n", selftmp);
     
    }
    Merci d'avance

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Billets dans le blog
    21
    Par défaut
    Une chaîne de caractères c'est un certain nombre de caractères contigus terminés par le caractère NULL ('\0' , à ne pas confondre avec le caractère 0).

    Cela veut dire que pour avoir une chaîne représentant n caractères, il faut que tu alloues de la place pour n + 1 caractères et que ce dernier caractère soit '\0'

    En n'allouant de la place que pour 7 caractères lorsque tu veux en représenter 7, tu commets donc une erreur. Je pense que tu as eu de la chance et que le bit placé après ton allocation était à 0, c'est pour cela que ton programme a au moins partiellement fonctionné.

    Pour le reste, il semble que l'indice 0 de ta chaîne n'ai pas été initialisé. J'ai eu un peu la flemme de regarder ce qui clochait dans ton programme de ce point de vue là, mais c'est dans cette direction que tu dois chercher. D'ailleurs, programmer, c'est déboguer, donc je ne te rendrais pas service...

    Sinon deux petits conseils: il y a environ 50% de ton code qui ne sert à rien, et que tu devrais enlever. Et puis, fmod c'est pour les double, pour des int l'opérator modulo suffit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int a = 3, b = 2;
    int c = a % 2; // % est l'opérateur modulo

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/11/2014, 12h55
  2. Découpage d'une chaîne de caractères
    Par dr_anas dans le forum C++
    Réponses: 6
    Dernier message: 24/06/2013, 15h13
  3. Problème d'affichage d'une chaîne de caractères
    Par bob32 dans le forum Assembleur
    Réponses: 13
    Dernier message: 23/06/2008, 22h06
  4. Découpage d'une chaîne de caractères
    Par karinhalabi dans le forum Cobol
    Réponses: 1
    Dernier message: 11/04/2007, 16h22
  5. Découpage d'une chaîne de caractère
    Par turbo_chess dans le forum C
    Réponses: 1
    Dernier message: 01/04/2007, 12h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo