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: 
Usually(but not always), `fgets()` will give you an extra `'\n'` appending the inputted string, because

> 
> A newline character makes fgets stop reading, but it is considered a
>  valid character by the function and included in the string copied to
>  str.
> 
> 
> 

Reference: <http://www.cplusplus.com/reference/cstdio/fgets/>

To get rid of that `'\n'` using minimal code:

```
fgets(filename, 15, stdin);
filename[strcspn(filename, "\n")] = '\0';

```
You need to declare `filename[16]` to be able to use 15 characters, you need space for the terminating zero.