Question: At some point in my code, I want to read a name for a file that I will be creating (and/or editing) and I've come up with the following:

```
FILE *fp;
char filename[15];
fgets(filename, 15, stdin);
fp = fopen(filename, "a");
fprintf(fp, "some stuff goes here");
fclose(fp);

```

Even though that does compile and run, it does not create (or open, if I manually create it) the file specified by `filename`.  

What would you suggest?

Answer: 
[`fgets()`](http://pubs.opengroup.org/onlinepubs/9699919799/functions/fgets.html) stores the newline character read from `stdin` after reading a line of input. You need to strip it manually, e.g.

```
size_t len = strlen(filename);
if (len > 0 && filename[len - 1] == '\n')
    filename[len - 1] = '\0';

```

You should also check that `fopen()` doesn't return `NULL`, which it will do if it was unable to open the file. I think using `fprintf` with a `NULL` file pointer is undefined behaviour.
You need to declare `filename[16]` to be able to use 15 characters, you need space for the terminating zero.