// par convention si l == 0 on souhaite dallouer le buffer
// si il existe
if( 0 == l && buffer != NULL) {
#if defined(DEBUG)
fprintf(stdout, "\nDEBUG: on souhaite simplement faire du mnage. (Buffer[0x%x])", buffer);
#endif
free(buffer); buffer = NULL; goto BAIL;
}
++l; // Pour le '0円' final.
if( l > length && buffer != NULL) {
#if defined(DEBUG)
fprintf(stdout, "\nDEBUG: le buffer allou est trop petit. (Buffer[0x%x])", buffer);
#endif
free (buffer);
buffer = NULL;
}
#if defined(DEBUG)
else {
fprintf(stdout, "\nDEBUG: pas de rallocation ncessaire. (Buffer[0x%x])", buffer);
}
#endif
[^] # Re: Aaah ! STRING$
Posté par xylo . En réponse au message Comment répeter un caractère avec printf. Évalué à 1.
version plus efficace... et commentée.
merci quand même pour ta réponse Obsidian mais je voulais faire plus simple sans alloc...
const char *chrstr( const char c, unsigned int l)
{
static unsigned int length = 0;
static char * buffer = NULL;
// par convention si l == 0 on souhaite dallouer le buffer
// si il existe
if( 0 == l && buffer != NULL) {
#if defined(DEBUG)
fprintf(stdout, "\nDEBUG: on souhaite simplement faire du mnage. (Buffer[0x%x])", buffer);
#endif
free(buffer); buffer = NULL; goto BAIL;
}
++l; // Pour le '0円' final.
if( l > length && buffer != NULL) {
#if defined(DEBUG)
fprintf(stdout, "\nDEBUG: le buffer allou est trop petit. (Buffer[0x%x])", buffer);
#endif
free (buffer);
buffer = NULL;
}
#if defined(DEBUG)
else {
fprintf(stdout, "\nDEBUG: pas de rallocation ncessaire. (Buffer[0x%x])", buffer);
}
#endif
if( NULL == buffer) {
length = l;
buffer = (char *) calloc( l, sizeof(char));
#if defined(DEBUG)
fprintf(stdout, "\nDEBUG: allocation d'un nouveau buffer[0x%x].", buffer);
#endif
}
if( NULL != buffer) {
buffer[--l] = '0円';
while(l) buffer[--l] = c;
}
BAIL:
return (const char *)buffer;
}