Name: Anonymous 2010-02-24 0:34
Hey guys, I would like some pointer (no, not that kind) on removing bloat in code. Here is a fully functional piece of code that I wrote which I'm worried about bloat in. How do I shorten this?
int get_input()
{
int count, paren_count, total_count, c;
char *input, *temp;
input = (char *) malloc (500 * sizeof (char));
if (input == NULL) return 0;
printf("%% ");
for (count = paren_count = total_count = 0; (c = getchar()) != EOF; count++, input++, total_count++)
{
if (count == 499)
{
input -= total_count;
temp = (char *) realloc (input, (500 + total_count) * sizeof (char));
if (temp == NULL)
return 0;
input = temp;
input += total_count;
}
if (c == '\n')
{
*input = '\0';
temp = input;
temp -= (count);
count = 0;
for (; *temp != '\0'; temp++)
{
if (*temp == '(')
paren_count++;
else if (*temp == ')')
paren_count--;
}
if (paren_count == 0)
break;
printf(" ");
}
*input = c;
}
*temp = '\0';
input -= total_count;
printf("%s\n", input);
free(input);
return 0;
}
int get_input()
{
int count, paren_count, total_count, c;
char *input, *temp;
input = (char *) malloc (500 * sizeof (char));
if (input == NULL) return 0;
printf("%% ");
for (count = paren_count = total_count = 0; (c = getchar()) != EOF; count++, input++, total_count++)
{
if (count == 499)
{
input -= total_count;
temp = (char *) realloc (input, (500 + total_count) * sizeof (char));
if (temp == NULL)
return 0;
input = temp;
input += total_count;
}
if (c == '\n')
{
*input = '\0';
temp = input;
temp -= (count);
count = 0;
for (; *temp != '\0'; temp++)
{
if (*temp == '(')
paren_count++;
else if (*temp == ')')
paren_count--;
}
if (paren_count == 0)
break;
printf(" ");
}
*input = c;
}
*temp = '\0';
input -= total_count;
printf("%s\n", input);
free(input);
return 0;
}