История изменений
Исправление punya, (текущая версия) :
#include <talloc2/tree.h>
#include <math.h>
char * bt_size_t_to_str ( void * ctx, size_t number )
{
char * result;
if ( number == 0 ) {
result = talloc ( ctx, sizeof ( char ) * 2 );
if ( result == NULL ) {
return NULL;
}
result[0] = '0';
result[1] = '\0';
return result;
}
// size of number + 1 for '\0'
uint8_t length = ( uint8_t ) floor ( log10 ( number ) ) + 2;
result = talloc ( ctx, sizeof ( char ) * length );
if ( result == NULL ) {
return NULL;
}
result[length - 1] = '\0';
char * walk = result + length - 1;
uint8_t digit;
while ( number > 0 ) {
walk--;
digit = number % 10;
number /= 10;
* walk = '0' + digit;
}
return result;
}
вот у меня такой вариант. самый очевидный.
Исходная версия punya, :
#include <talloc2/tree.h>
#include <math.h>
char * bt_size_t_to_str ( void * ctx, size_t number )
{
char * result;
if ( number == 0 ) {
result = talloc ( ctx, sizeof ( char ) * 2 );
if ( result == NULL ) {
return NULL;
}
result[0] = '0';
result[1] = '\0';
return result;
}
// size of number + 1 for '\0'
uint8_t length = ( uint8_t ) floor ( log10 ( number ) ) + 2;
result = talloc ( ctx, sizeof ( char ) * length );
if ( result == NULL ) {
return NULL;
}
result[length - 1] = '\0';
char * walk = result + length - 1;
uint8_t digit;
while ( number > 0 ) {
walk--;
digit = number % 10;
number /= 10;
* walk = '0' + digit;
}
return result;
}
вот у меня такой вариант =)