Logo du forum
 

Forum TT-Hardware

| Inscription | | Recherche | | FAQ | | Accueil | | Liste des membres |
| Calendrier |
 
Vous n'êtes pas identifié! [Connexion] ou [Inscription] Forum » Programmation » [C / C++ / C#] » Concaténer un caractère à une chaine en utilisant sa valeur ASCII
Login Mot de passe

1 visiteurs sur ce topic (0 membre(s), 1 invité(s) )

Auteur
Sujet : Concaténer un caractère à une chaine en utilisant sa valeur ASCII
Zéphyr



 






Message du 30-07-2007 @ 9:48


Voilà, j'aimerais séparer les champs (passés en paramètre) de ma "trame" par "$" suivi d'un caractère, par exemple $A785$B4578$C24654...$G85644. Pour éviter de concaténer caractère par caractère je voulais utiliser la valeur ASCII puis l'incrémenter.

J'ai donc le code suivant :

Code :


char j = 65; // j vaut A
   for(i=1;i<=7;i++){
      trame = strcat(trame,"$");
      trame = strcat(trame,&j);
      trame = strcat(trame,argv[i]);
      j++;
   }



et ça m'affiche des caractères bizarres après le $A :

$Aùø·8455484$Bùø·5...

Une idée d'où pourrait venir le problème ?

[message édité le 30-07-2007 @ 10:44 Par Zéphyr]

- Haut de page -
Zéphyr



 






Message du 30-07-2007 @ 10:02

Ah en fait ça m'affiche uniquement ces caractères quand je passe par Putty (connexion à distance sur la machine), sinon quand je regarde directement sur la machine, ça m'affiche ma trame correctement.

Est-ce que c'est quand même mal codé où c'est de la faute de Putty ? :)

- Haut de page -
Icy



 






Message du 30-07-2007 @ 10:18

charset de putty ou de l'host ;)
- Haut de page -
Zéphyr



 






Message du 30-07-2007 @ 10:36

Ouf ça vient pas de mon code. :D
Faut que je choisisse quel format dans Putty ? Avant j'étais en Latin-1, West Europe.

- Haut de page -
Zéphyr



 






Message du 30-07-2007 @ 10:54

Sur ma machine je suis en UTF-8 :
Code :


spelweb:/home/guillaume/c# locale
LANG=fr_FR.UTF-8
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=



et quand je mets UTF-8 sous PuttY, j'ai plus de caractères bizzares mais deux gros pâtés.

$A▒▒8...

- Haut de page -
Zéphyr



 






Message du 30-07-2007 @ 15:55

En fait il semblerait que ça vienne pas de l'encodage, mais bien de mon code. Les caractères bizarres venaient du fait que j'essayais de lire la mémoire...

Donc me voilà revenu au point de départ : Comment concaténer un caractère à une chaîne en utilisant sa valeur ASCII ?

- Haut de page -
Icy



 






Message du 30-07-2007 @ 16:29

chr(j)
- Haut de page -
Zéphyr



 






Message du 30-07-2007 @ 16:53

Merci beaucoup pour ton aide, mais t'es sûr que ça existe ça ? Parce que j'ai droit à un beau "référence indéfinie vers « chr »" :siffle:

- Haut de page -
B2000



 






Message du 30-07-2007 @ 17:13

c'est quoi ce langage ? du C/C++ ?? y a pas de $ en debut de variable ? si c'est bien du C/C++ pourquoi ne pas utiliser le . (point) pour concatener ?

[edit]ca doit etre du C#, ceci expliquant l'absence de $[/edit]

[message édité le 30-07-2007 @ 17:15 Par B2000]
- Haut de page -
Zéphyr



 






Message du 30-07-2007 @ 18:44

B2000 a écrit

c'est quoi ce langage ? du C/C++ ?? y a pas de $ en debut de variable ? si c'est bien du C/C++ pourquoi ne pas utiliser le . (point) pour concatener ?

[edit]ca doit etre du C#, ceci expliquant l'absence de $[/edit]



C'est du C. Et y'a pas besoin de $. ;)

- Haut de page -
B2000



 






Message du 31-07-2007 @ 1:06

tellement l'habitude du php que j'aurais mis des $ partout :D (pourtant j'ai fait du C/C++ aussi a mes debuts)

ton probleme viendrait pas d'un fin de chaine manquant ?

[message édité le 31-07-2007 @ 1:09 Par B2000]
- Haut de page -
Zéphyr



 






Message du 31-07-2007 @ 9:23

B2000 a écrit

tellement l'habitude du php que j'aurais mis des $ partout :D (pourtant j'ai fait du C/C++ aussi a mes debuts)

ton probleme viendrait pas d'un fin de chaine manquant ?



En voulant te répondre j'ai trouvé la solution. :D

C'est tout con en fait, strcat attend une chaine de caractère pas UN caractère donc :

Code :


char id[] = {65, '\0'};
   for(i=1;i<=7;i++){
      strcat(trame,"$");
      strcat(trame,id);
      strcat(trame,argv[i]);
      id[0]++;
   }



Et j'ai bien $A86465$B56465...$G1456.

Merci à vous deux ! :)

- Haut de page -

Plan du forum | Contacter l'administrateur

Powered by SoulBB 3.0.1
© Soulmanto, 2003-2006

Valid XHTML 1.0 Transitional

Page générée en 0.124 secondes