C : Mettre une valeur numérique dans un const char - C - Programmation
Marsh Posté le 03-05-2006 à 15:42:58
que dit la définition de const ?
Merci de mettre des balise [ code ] pour rendre ton code lisible stp.
Marsh Posté le 03-05-2006 à 15:46:44
Voilà pour les balises
Il faut te dire que l'outils que j'utilise génère le code C seul.
J'ai adapté à mes besoins (par exemple la boucle sur j)
Je n'y connais pas grand chose en C aussi je ne vois pas trop ce que veux dire ta question.
C'est moi qui ai défini p par le const char *p
Tout ce que je sais, c'est que ce p que l'on retrouve dans la fonction sapgui_table_set_text doit être de type const char!
Marsh Posté le 03-05-2006 à 15:48:00
je t'aide:
(de http://mapage.noos.fr/emdel/init_c.htm )
Citation : Le qualificateur const signifie que la fonction accepte l'adresse d'une chaine non modifiable, car elle s'engage à ne pas modifier la chaine pointée, ni à passer son adresse à une fonction qui pourrait la modifier. |
Marsh Posté le 03-05-2006 à 15:48:18
ReplyMarsh Posté le 03-05-2006 à 15:53:41
nargy a écrit : Déclare: |
Oui, ce pourrait être une solution mais j'aimerais que p=j
soit p=0 puis p=1 etc... comme l'incrément j!
Que mettre alors pour const char *p= ???
Marsh Posté le 03-05-2006 à 16:10:36
char buffer[64];
snprintf(buffer,sizeof(buffer),"%d",j);
sapgui_table_set_text( ............., buffer, ............ );
Marsh Posté le 03-05-2006 à 16:12:45
sinon, si tu est sûr que j va que de 0 à 8:
char buf[2];
buf[0]='0'+j;
buf[1]=0;
sapgui_table_set_text( ............., buf, ............ );
Marsh Posté le 03-05-2006 à 16:49:47
bjone a écrit : char buffer[64]; |
Ca marche!
Je ne comprends pas comment mais ça fonctionne!
Un super grand merci
Marsh Posté le 03-05-2006 à 17:01:00
lool38 a écrit : |
snprintf() a converti une valeur numérique en sa représentation décimale sous la forme d'une chaine de caractères contenue dans un tableau de char. L'adresse du premier élément du tableau a été transmise à la fonction.
Par contre, tu m'inqiuètes quand d'une part tu dis "je ne connais pas grand chose au C", et que d'autre part tu manipules du code C. Il faut s'attendre à féter dignement les 20 ans de Chernobyl ? Ou à ce que quelques avions se crashent en Mer Noire ?
Marsh Posté le 03-05-2006 à 17:06:58
ce que ta fonction attends, c'est une chaine représentant un entier.
il te faut donc une chaine : un tableau de caractères assez grand (char buffer[64] par exemple);
ensuite il faut que de ton entier, tu généres la chaine de caractères le réprésentant, snprintf(buffer,sizeof(buffer),"%d",j); qui prends l'entier j le traite et génère la chaine de caractère le représentant, et stockes ces caractères dans la chaine buffer, de taille maximale sizeof(buffer).
ensuite tu appelles ta petite fonction, qui attends dans un de ses paramètres, un pointeur (char *) sur la chaine de caractère représentant l'entier.
comme t'as dit darkalt3, le const est là pour dire que la chaine ne sera pas modifiée par sapgui.....
Marsh Posté le 03-05-2006 à 17:22:02
Effectivement, ça se clarifie.
Pour votre info, j'ai une utilisation hyper ponctuelle de ce soft générant du C. Et là, je bosse pour une maison d'édition alors au pire, vous aurez plus de bouquins merdiques en librairie
En tout cas, un grand grand merci!
Marsh Posté le 03-05-2006 à 19:16:18
_darkalt3_ a écrit : je t'aide:
|
c'est quoi le probleme ? la conversion 'char *' -> 'const char *' est valide, c'est dans l'autre sens que c'est interdit
Marsh Posté le 03-05-2006 à 19:46:54
oui c'est pas ça mais lool 38ième du nom semblait vouloir utiliser directement un const char* en amont du passage du pointeur.
Marsh Posté le 03-05-2006 à 15:41:06
Bonjour à tous,
Voilà mon problème :
J'utilise un logiciel de test qui se scripte en C.
Une des fonction utilisée fait appel à un const char.
Je voudait rendre ce const char variable ( )
Voilà comment ça se présente :
Est-ce que c'est possible?
Comment faire alors?
Merci!!
Message édité par lool38 le 03-05-2006 à 15:47:32