[C] Ajout d'un char en fin de chaine en boucle

Ajout d'un char en fin de chaine en boucle [C] - C - Programmation

Marsh Posté le 12-08-2003 à 08:35:27    

Salut,
Quelle est la maniere propre pour faire ca en C ?
voici mon code:
 
 

Code :
  1. int n;
  2. char c;
  3. char buf[255];
  4. while(...)
  5. {
  6. //recuperation d'un char dans c
  7. n = strlen(buf);
  8. buf[n] = c;
  9. buf[++n] = '\0';
  10. if(n == 255) //si le tampon est plein
  11.   break;
  12. }

Reply

Marsh Posté le 12-08-2003 à 08:35:27   

Reply

Marsh Posté le 12-08-2003 à 08:47:34    

C'est comme ca que j;aurais fait aussi

Reply

Marsh Posté le 12-08-2003 à 08:57:35    

en fait le truc aussi sur lequel je m'interroge c'est que le code est en realite comme ca :
 

Code :
  1. char buf[255]; //var globale
  2. void mafunc()
  3. {
  4. int n;
  5. char c;
  6. n = strlen(buf);
  7. buf[n] = c;
  8. buf[++n] = '\0';
  9. }
  10. main()
  11. {
  12. while(...)
  13. mafunc();
  14. }

 
 
c'est pas genant de creer tres souvent (ben la fonction est appelee souvent car elle est dans le while) int n et char c, vaut mieux ca que des var gloables?

Reply

Marsh Posté le 12-08-2003 à 09:13:33    

ANTSite a écrit :

en fait le truc aussi sur lequel je m'interroge c'est que le code est en realite comme ca :
 

Code :
  1. char buf[255]; //var globale
  2. void mafunc()
  3. {
  4. int n;
  5. char c;
  6. n = strlen(buf);
  7. buf[n] = c;
  8. buf[++n] = '\0';
  9. }
  10. main()
  11. {
  12. while(...)
  13. mafunc();
  14. }

 
 
c'est pas genant de creer tres souvent (ben la fonction est appelee souvent car elle est dans le while) int n et char c, vaut mieux ca que des var gloables?


 
C alloué sur la pile, c pas comme si tu faisais de l'allocation dynamique. Ca prend pas plus de temps que si ct des globales.

Reply

Marsh Posté le 12-08-2003 à 09:21:35    

Dans la mesure où buffer est global ET si tu ne l'utilises qu'une fois, tu peux aussi l'initialiser à 0 partout. Ca t'évite d'avoir à reclôturer la chaîne à chaque ajout d'un char c dans le buf...


---------------
NOUVEAU! Le guide de l'édition en version ebook : http://marcautret.free.fr/autret/150q-ebook/
Reply

Marsh Posté le 12-08-2003 à 09:39:34    

et avec strcat ? d'ailleurs doit bien exister strncat ou strlcat. jamais utilsé
 
 
et voilà C99
 

strncat
char *strncat(char *s1, const char *s2, size_t n);
The function copies the string s2, not including its terminating null character, to successive elements of the array of char that stores the string s1, beginning with the element that stores the terminating null character of s1. The function copies no more than n characters from s2. It then stores a null character, in the next element to be altered in s1, and returns s1.

Reply

Marsh Posté le 12-08-2003 à 09:57:24    

strncat, mais le probleme c'est que moi c'est un char et non un char* que je veux append :??:

Reply

Marsh Posté le 12-08-2003 à 10:30:21    

ben tu le mets dans un char[2]
 

Code :
  1. char holder[2]=""; // ca te mets le 0 final
  2. // mais tu peux lemettre explicitement aussi
  3. holder[0]=c;
  4. holder[1]='\0';
  5. strncat(bidule, holder, n);

Reply

Sujets relatifs:

Leave a Replay

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