← Readline Download

/**----------------------------------------------------------------------------\ | Read input from the user. | +------------------------------------------------------------------------------+ | Usage: | | printf("%s\n", readline()); | | | | Result: | | <Whatever the user just typed in.> | +---------+-------+--------+---------------------------------------------------+ | @return | char* | result | Whatever the user just typed in. | \---------+-------+--------+--------------------------------------------------*/ #include <stdio.h> #include <stdlib.h> #include <string.h> char *readline(void){ char *result = ""; while(1){ /* Get character from stdin. */ char character = (char)fgetc(stdin); if(character == '\0' || character == '\n') break; /* Convert to mutable (C-string pointer). */ char *append = strdup((char*)&character); /* Ensure only one character then NUL. */ append[1] = '\0'; /* Get string. */ char *original = result; size_t original_size = strlen(original); /* Write string. */ result = malloc(original_size + 2); memcpy(result, original, original_size); memcpy(result + original_size, append, 2); } return result; } /**----------------------------------------------------------------------------\ | Example usage. | \-----------------------------------------------------------------------------*/ #include <unistd.h> int main(int argc, char **argv){ /* Get a string from the user. */ printf("Enter a string, and I'll say it back to you (CTRL+C to quit).\n"); while(1) printf("%s\n----------\n", readline()); /* Done. */ return 0; }