Использование Realloc в C

Это действительно пост для некоторых советов с точки зрения использования realloc, более конкретно, если бы я мог использовать его для упрощения моего существующего кода. По сути, то, что делает ниже, он динамически выделяет некоторую память, если я превысил 256, тогда массив необходимо увеличить в размере, поэтому я malloc временный массив с 2-кратным размером, memcpy и т. Д. (См. Ниже).

Мне просто было интересно, можно ли использовать realloc в приведенном ниже коде, чтобы упростить его, любые советы, примеры кода или даже подсказки о том, как его реализовать, очень ценятся!

Ура.

void reverse(char *s) {
char p;

switch(toupper(s[0])) 
{
    case 'A': case 'E': case 'I': case 'O': case 'U':
        p = s[strlen(s)-1];
        while( p >= s )
            putchar( p-- );
        putchar( '\n' );
        break;
    default:
        printf("%s", s);
        break;
}
printf("\n");
    }

    int main(void) {
char c;
int buffer_size = 256;
char *buffer, *temp;
int i=0;

buffer = (char*)malloc(buffer_size);
while (c=getchar(), c!=' ' && c!='\n' && c !='\t') 
{
    buffer[i++] = c;
    if ( i >= buffer_size )
    {
        temp = (char*)malloc(buffer_size*2);
        memcpy( temp, buffer, buffer_size );
        free( buffer );
        buffer_size *= 2;
        buffer = temp;
    }
}
buffer[i] = '\0';
reverse(buffer);

return 0;

}

6
задан PnP 29 November 2011 в 23:25
поделиться