Concatener un char * et un int en C

Concatener un char * et un int en C - C++ - Programmation

Marsh Posté le 09-08-2002 à 01:25:01    

Bonjour. Une question de base en C, je voudrais définir cela :
char * name = "nomi" ou i vaut de 1 a 100 ("nom1" "nom2" ... "nom100" ) . Quelqu'un pourrait-il m'aider ?  
Merci

Reply

Marsh Posté le 09-08-2002 à 01:25:01   

Reply

Marsh Posté le 09-08-2002 à 01:31:57    

T'es pas clair:
c'est un tableau de 100 strings ou une seule string contenant les 100 mots separes par un blanc que tu veux?
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 09-08-2002 à 01:36:00    

Désolé je veux affecter 100 mots différents dans le meme char * .
J'affecte un mot, je le traite et ensuite j'affecte un autre mot que je traite , ainsi de suite.

Reply

Marsh Posté le 09-08-2002 à 03:43:14    

Donc deja, on va calculer la place necessaire:
nom->100 * 3 char
1-9->9 * 1 char
10-99->89 * 2 char
100->1 * 3 chars
blanc->99 * 1 char
0 final-> 1 * 1 char
 
Donc la chaine a besoin de  
100*3 + 9*1 + 89*2 + 1*3 + 99*1 + 1*1 = 590
Donc tu vas faire un  

Code :
  1. char scratch[8];
  2. char *name;
  3. int i;
  4. name = (char *) malloc (590*sizeof(char));
  5. *name = (char) 0;
  6. for (i=1; i <=100; i++)
  7. {
  8. sprintf(scratch,"name%i", i);
  9. strcat(name, scratch);
  10. if (i<100)
  11.      strcat(name, " " );
  12. }


 
Si tu admet un blanc en fin de name, ca peut s'optimiser (590+1 blanc->591 dans le malloc):

Code :
  1. char scratch[9];
  2. char *name;
  3. int i;
  4. name = (char *) malloc (591*sizeof(char));
  5. *name = (char) 0;
  6. for (i=1; i <=100; i++)
  7. {
  8. sprintf(scratch,"name%i ", i);
  9. strcat(name, scratch);
  10. }


 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 09-08-2002 à 03:49:35    

philbarney a écrit a écrit :

Désolé je veux affecter 100 mots différents dans le meme char * .
J'affecte un mot, je le traite et ensuite j'affecte un autre mot que je traite , ainsi de suite.
 




Euh, je t'avais mal compris.
En fait, ce que tu veux faire, c'est:

Code :
  1. char name[8]; /* il y a la place pour name100 */
  2. int i;
  3. for (i=1; i <=100; i++)
  4. {
  5. sprintf(name,"name%i", i);
  6. /* ici, appel au traitement de name */
  7. }

 
A+,


Message édité par gilou le 09-08-2002 à 03:50:01

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 09-08-2002 à 10:07:21    

gilou a écrit a écrit :

 
Euh, je t'avais mal compris.
En fait, ce que tu veux faire, c'est:

Code :
  1. char name[8]; /* il y a la place pour name100 */
  2. int i;
  3. for (i=1; i <=100; i++)
  4. {
  5. sprintf(name,"name%i", i);
  6. /* ici, appel au traitement de name */
  7. }

 
A+,




En plus y'a la traduction en anglais :D


---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed