Это действительно пост с некоторыми советами относительно использования realloc, более конкретно, если бы я мог использовать его для упрощения моего существующего кода. По сути, то, что делает нижеприведенное, динамически распределяет некоторую память, если я превышаю 256, то размер массива необходимо увеличить, поэтому я выделяю временный массив с удвоенным размером, 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;
}