它真正使用realloc的一些建議帖子更具體地說,如果我可以利用它來簡化我現有的代碼。本質上,下面做了什麼,它動態分配一些內存,如果我超過了256,那麼數組的大小需要增加,所以我malloc一個臨時數組,2倍大小,memcpy等(見下文)。在使用realloc的,性方面用C
我只是想知道,如果可能的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;
}
音符的風格:你應該更喜歡** **不投malloc'的'的返回值。 –
而'reverse'應該將參數作爲'const char *'。 –