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 :

Découper string en fonction de position avec strncpy


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 43
    Par défaut Découper string en fonction de position avec strncpy
    Bonjour,
    Je cherche à découper ma chaine de 184 caractères en fonction de la position en C, en cherchant l'équivalent du substring je suis tombé sur strncpy mais mon exemple ne fonctionne pas :/

    Ci-joint mon code (main.c) :
    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    int main()
    {
        char CA[6];
        char TA[2];
        char FA[5];
        char MA[6];
        char CA[12];
        char HA[16];
        char LA[14];
     
     
        printf("Hello\n");
        char data[] = "0010000001110010111100100000000010110011000000000000010100111000001101000101010011000000101001101001011100000000000000101111100000100000000000001011101110010000111111000000110101100111";
        strncpy(CA, data+4, 6 );
        strncpy(TA, data+10, 2 );
        strncpy(FA, data+12, 5 );
        strncpy(MA, data+17, 6 );
        strncpy(CA, data+64, 12);
        strncpy(HA, data+104, 16);
        strncpy(LA, data+142, 14 );
     
        printf("CA\n");printf(CA);
        printf("TA\n");printf(TA);
        printf("FA\n");printf(FA);
        printf("MA\n");printf(MA);
        printf("CA\n");printf(CA);
        printf("HA\n");printf(HA);
        printf("LA\n");printf(LA);
        printf("Finish\n");
     
        return 0;
    }
    Quand j’exécute, je n'ai pas du tout ce que je veux dans les variables et je ne comprends pas pourquoi, et j'ai même des caractères bizarre en sortie de console :

    Hello
    CA000001Ç↑@TA11000001Ç↑@FA0010111000001Ç↑@MA
    1110010010111000001Ç↑@CA
    0011010001011110010010111000001Ç↑@HA
    00000000000000100011010001011110010010111000001Ç↑@LA
    0010111011100100000000000000100011010001011110010010111000001Ç↑@Finish

    Process returned 0 (0x0) execution time : 0.016 s
    Press any key to continue.

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Bonjour,

    Citation Envoyé par http://man.developpez.com/man3/strncpy.3.php
    seuls les n premiers octets de src sont copiés. Ainsi, s'il n'y a pas de caractère nul dans les n premiers octets de src, la chaîne résultante ne disposera de caractère nul final.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 43
    Par défaut
    Comment faire du coup ? C'est fou qu'un équivalent de Substr() n'existe pas en C.

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Tout simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    char CA[7];
    strncpy(CA, data+4, 6 );
    CA[6] = 0;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    char CA[7] = {0};
    strncpy(CA, data+4, 6 );

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 43
    Par défaut
    Merci beaucoup ! Cela me sauve la vie !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. EXCEL : fonction SOMME.SI avec 2 critères
    Par repié dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 17/03/2016, 17h10
  2. équivalence fonction ROWNUM (oracle) avec MySQL
    Par pblb62 dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 23/01/2006, 13h50
  3. Position avec code MonCtrl.Startposition = centerscreen ??
    Par STRUFIELD dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/12/2005, 09h25
  4. [String] pb fonction String[] split(String regex)
    Par Kyti dans le forum Langage
    Réponses: 6
    Dernier message: 05/04/2005, 13h06
  5. Réponses: 5
    Dernier message: 12/01/2005, 20h58

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