Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1653 connectés 

  FORUM HardWare.fr
  Programmation
  C

  C : Mettre une valeur numérique dans un const char

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

C : Mettre une valeur numérique dans un const char

n°1358726
lool38
Posté le 03-05-2006 à 15:41:06  profilanswer
 

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 ( :pt1cable: )
 
Voilà comment ça se présente :  
 
 

Code :
  1. const char *p;
  2. int i;
  3. int j;
  4. for(j=0; j<8; j++) {
  5. p = la valeur de j
  6. sapgui_table_set_text("(0, 'Article')", 
  7.  tblSAPMV45ATCTRL_U_ERF_AUFTRAG4,
  8.  p,
  9.  "3",
  10.  "{Article}",
  11.  BEGIN_OPTIONAL,
  12.   "AdditionalInfo=sapgui108",
  13.  END_OPTIONAL);
  14. }


 
Est-ce que c'est possible?
 
Comment faire alors?
 
Merci!!


Message édité par lool38 le 03-05-2006 à 15:47:32
mood
Publicité
Posté le 03-05-2006 à 15:41:06  profilanswer
 

n°1358730
_darkalt3_
Proctopathe
Posté le 03-05-2006 à 15:42:58  profilanswer
 

que dit la définition de const ?
 
Merci de mettre des balise [ code ] pour rendre ton code lisible stp.

n°1358736
lool38
Posté le 03-05-2006 à 15:46:44  profilanswer
 

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!

n°1358740
_darkalt3_
Proctopathe
Posté le 03-05-2006 à 15:48:00  profilanswer
 

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.

n°1358741
nargy
Posté le 03-05-2006 à 15:48:18  profilanswer
 

Déclare:
> const char *p=...;
à l'intérieur de ta boucle.

n°1358749
lool38
Posté le 03-05-2006 à 15:53:41  profilanswer
 

nargy a écrit :

Déclare:
> const char *p=...;
à l'intérieur de ta boucle.


 
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= ???

n°1358769
_darkalt3_
Proctopathe
Posté le 03-05-2006 à 16:08:33  profilanswer
 

:??:

n°1358772
bjone
Insert booze to continue
Posté le 03-05-2006 à 16:10:36  profilanswer
 

char buffer[64];
snprintf(buffer,sizeof(buffer),"%d",j);
 
sapgui_table_set_text( ............., buffer, ............ );
 

n°1358776
bjone
Insert booze to continue
Posté le 03-05-2006 à 16:12:45  profilanswer
 

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, ............ );  
 

n°1358852
lool38
Posté le 03-05-2006 à 16:49:47  profilanswer
 

bjone a écrit :

char buffer[64];
snprintf(buffer,sizeof(buffer),"%d",j);
 
sapgui_table_set_text( ............., buffer, ............ );


 
 :bounce:  
Ca marche!
Je ne comprends pas comment mais ça fonctionne!
 
Un super grand merci :jap:

Message cité 1 fois
Message édité par lool38 le 03-05-2006 à 16:50:46
mood
Publicité
Posté le 03-05-2006 à 16:49:47  profilanswer
 

n°1358868
Emmanuel D​elahaye
C is a sharp tool
Posté le 03-05-2006 à 17:01:00  profilanswer
 

lool38 a écrit :


Je ne comprends pas comment mais ça fonctionne!


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 ?


Message édité par Emmanuel Delahaye le 03-05-2006 à 22:14:37

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1358871
bjone
Insert booze to continue
Posté le 03-05-2006 à 17:06:58  profilanswer
 

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.....


Message édité par bjone le 03-05-2006 à 17:08:14
n°1358888
lool38
Posté le 03-05-2006 à 17:22:02  profilanswer
 

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 :D
 
En tout cas, un grand grand merci!

n°1359013
skelter
Posté le 03-05-2006 à 19:16:18  profilanswer
 

_darkalt3_ a écrit :

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.



 
c'est quoi le probleme ? la conversion 'char *' -> 'const char *' est valide, c'est dans l'autre sens que c'est interdit

n°1359018
bjone
Insert booze to continue
Posté le 03-05-2006 à 19:46:54  profilanswer
 

oui c'est pas ça mais lool 38ième du nom semblait vouloir utiliser directement un const char* en amont du passage du pointeur.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  C : Mettre une valeur numérique dans un const char

 

Sujets relatifs
recuperer la valeur d'une variable javascript dans du code phpComment convertir un tableau String contenant des dates en numérique
[Prolog] Garder en mémoire la valeur d'une variableRécupérer la valeur de la version d'un projet
passer un numérique en chaine ou inversementRécupérer valeur combobox (liste déroulante)
Renvoyer la valeur d'une cellule d'une liste de fichiers?? merci d'avaFonction faire resortir valeur
Report d'1 valeur d'1 textbox ds plusieurs feuilles (chgmt lignes)recuperer valeur html -> javascript
Plus de sujets relatifs à : C : Mettre une valeur numérique dans un const char


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR