fork download
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <cstring>
  4. #include <memory>
  5.  
  6. char* read_line(FILE* input);
  7.  
  8. int main() {
  9. std::unique_ptr<char[]> str;
  10.  
  11. str.reset(read_line(stdin));
  12.  
  13. std::cout << "read: [" << str.get() << "]" << std::endl;
  14.  
  15. return 0;
  16. }
  17. char* read_impl(FILE* input, size_t size, int ch);
  18.  
  19. char* read_line(FILE* input)
  20. {
  21. return read_impl(input, 0, fgetc(input));
  22. }
  23.  
  24. char* read_impl(FILE* input, size_t size, int ch)
  25. {
  26. char* str;
  27. if (ch == EOF || ch == '\n')
  28. {
  29. str = new char [size + 1];
  30. str[size] = '\0';
  31. }
  32. else
  33. {
  34. str = read_impl(input, size + 1, fgetc(input));
  35. str[size] = char{ch};
  36. }
  37. return str;
  38. }
Success #stdin #stdout 0.01s 5528KB
stdin
Hello, World!
stdout
read: [Hello, World!]