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 :

Comment concaténer des variables char


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 167
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 167
    Par défaut Comment concaténer des variables char
    Bonjour.
    Je me prends le chou depuis un très très bon moment.

    J'ai besoin de concaténer des variable char en une seul.

    Un gros je déclare des variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    char coords[116];
    char lat[15];
    char lon[15];
    char alt[15];
    char time[15];
    char vel[15];
    J'ai une fonction qui va donner des valeur au variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     gps.getPar(lon,lat,alt,time,vel);
    Ces variables prennent des valeurs comme
    34.5678
    234.6789

    Elles ne peuvent pas avoir une longueur supérieure à 15, mais peuvent en avoir 10

    J'aimerais que la variable coords prenne les valeurs des autres variables et y ajouter des String "lon=", "&lat=", "&alt=","&vel=","&time=".

    J'ai donc essayé ceci

    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
     
      strcpy(coords,"long=");
      strncat(coords,lon,COORDSSIZ); //21
     
      strcat(coords,"&lat=");        //25
      strncat(coords,lat,COORDSSIZ);//40
     
      strcat(coords,"&alti=");        //46
     
      strncat(coords,alt,COORDSSIZ);  //61
     
      strcat(coords,"&time=");        //66
      strncat(coords,time,20);      //86
     
     
      strcat(coords,"&vel=");        //91
      strncat(coords,vel,COORDSSIZ);  //116
    Au final coords doit afficher ceci
    long=608.476993&lat=4613.165159&alt=345.678&vel=0.00000&time=20130714190621.000


    Le problème, c'est au niveau de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strncat(coords,alt,COORDSSIZ);  //61
    Le programme plante.
    Si comment ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      strncat(coords,alt,COORDSSIZ);  //61
     
      strcat(coords,"&time=");        //66
      strncat(coords,time,20);      //86
     
     
      strcat(coords,"&vel=");        //91
      strncat(coords,vel,COORDSSIZ);  //116
    Le programme ne plante pas.

    En résumé, comment puis concatener des char?

    Si je peux concaténer les lat, lon, alt, vel, time en y ajoutant des virgules à la place des "&xxx=", je serai heuruex...

    PS; je crois que mon problème est lié au buffer de coords et de la longueur des caractères dans les autres variables, et peut-être du terminateur des variables. Mais là je suis largué.


    milles merci pour votre précieuse aide

  2. #2
    Membre émérite Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Par défaut
    Bonsoir, dans ce cas précis snprintf() est plus appropriée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    snprintf(coords, sizeof coords,"long=%s,lat=%s,alt=%s,vel=%s,time=%s",lon,lat,alt,vel,time);


    Citation Envoyé par pierrot10
    Un gros je declare des variable
    char coords[116];
    char lat[15];
    char lon[15];
    char alt[15];
    char time[15];
    char vel[15];

    <...>

    Au final coords doit afficher ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    long=608.476993&lat=4613.165159&alt=345.678&vel=0.00000&time=20130714190621.000

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 167
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 167
    Par défaut
    Merci pour ta reponse, mais ca crash toujours.
    Mais ta reponse est intéressante.

    Comment puis-je etre sure que 116 de

    char coords[116];

    est juste?

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 167
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 167
    Par défaut
    C'est intéressant et ca semble avancé

    J'ai mis cette variable ainsi
    char coords[]="";

    Mon code ne crash plus et fonction sauf que coords n'affiche rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      snprintf(coords, sizeof coords,"lon=%s,lat=%s,alti=%s,vel=%s,time=%s",lon,lat,alt,vel,time);
     
      #ifdef DEBUG
        Serial.print(F("Coords : "));                               
        Serial.println(coords); // Ca affiche rien
      #endif

  5. #5
    Membre expérimenté Avatar de moins1
    Homme Profil pro
    Autre
    Inscrit en
    Février 2013
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autre
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 85
    Par défaut
    Tu risques la segfault si tu ne donnes pas de taille. Ça risque d'écrire n'importe où.


  6. #6
    Membre émérite Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Par défaut
    Montre-nous un code compilable reproduisant l'erreur...

Discussions similaires

  1. Réponses: 11
    Dernier message: 11/07/2008, 14h58
  2. Réponses: 4
    Dernier message: 26/05/2006, 17h17
  3. [VB] Comment creer des variables d'environnement
    Par keveen dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 16/03/2006, 11h13
  4. Réponses: 7
    Dernier message: 23/01/2006, 11h53
  5. Réponses: 1
    Dernier message: 30/12/2005, 10h57

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