echo.c

                Never    
C
       
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MALLOC_TYPE_SIZE(t,n) (t *) malloc((n)*sizeof(t))

int main(void) {
  int size_of_the_string = 0;
  int number_of_chars_left = 1;
  char *string = MALLOC_TYPE_SIZE(char, number_of_chars_left);
  char *pivot_string;
  char input_char;

  while (1) {
    input_char = getchar();
    if (input_char == EOF) {
      break;
    };
    if (input_char == '\n') {
      continue;
    }
    string[size_of_the_string] = input_char;
    size_of_the_string++;
    number_of_chars_left--;
    if (number_of_chars_left == 0) {
      number_of_chars_left = size_of_the_string;
      pivot_string = MALLOC_TYPE_SIZE(char, number_of_chars_left * 2);
      strcpy(pivot_string, string);
      free(string);
      string = pivot_string;
    }
  }
  printf("echo: %s\n", string);
  free(string);
  return 0;
}

Raw Text