void someFunction(){
    char *buffer;
    size_t bufsize = 32;
    int bytes_read;
    for (;;) {
        buffer = (char *) malloc(bufsize * sizeof(char));
        if (buffer == NULL) {
            perror("Unable to allocate buffer");
            exit(1);
        }
        FILE *ptr;
        ptr = fopen("sample.txt", "a");
        printf("Enter Stuff to write down:\n");
        //getline(&buffer,&bufsize,stdin);
        //fgets(buffer, 30, stdin);
        //scanf("%[^\n]%*c", buffer);
        //scanf("%s", buffer);
        if (buffer[0] == '0') {
            break;
        }
        WriteWithFprintf(ptr, buffer);
        free(buffer);
        fclose(ptr);
    }
}
The problem is: if I use
    getline(&buffer,&bufsize,stdin);
or
    fgets(buffer, 30, stdin);
then it escapes the first like so:
    Enter Stuff to write down:
    Enter Stuff to write down:
    0
If I use:
    scanf("%[^\n]%*c", buffer);
then I get an infinite loop.
It does work with:
   scanf("%s", buffer);
but I want input with space so this is not an option for me.
 
     
    