This is probably trivial question. I am not a professional programmer, I am rather a mathematician who is doing some numerical experiment using C. I would like the output of my
Use sprintf to generate the filename.
char buf[80];
sprintf(buf,"file%d", i);
fopen(buf,"w");
Array syntax in C uses square brackets [].
In C, use snprintf:
char buf[PATH_MAX];
snprintf(buf, sizeof(buf), "file%d", i);
If you use linux, there is a useful GNU extension:
char *name;
asprintf(&name. "file%d", i);
You need to remember to free(name) after use.
Note that your syntax FILE *f(i); is not valid though.
If you need to declare an array of FILE * of 10 elements do:
FILE *array[10];
then use it like that:
array[i] = fopen(filename, "W");
You could try this:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
   int i = 0;
   for (i = 0; i < 10; i++) {
      char filename[64];
      sprintf(filename, "file%d", i);    
      FILE *fp = fopen(filename, "w");
      fprintf(fp, "%d\n", i);
      fclose(fp);
   }
   return 0;
}
Your code is almost ok. Some observations:
sprintf to create the name of the file. In C there is not a concatenate operator of strings.You can just build a string up with sprintf.  Make sure your buffer is large enough:
char filename[20];
sprintf( filename, "file%d", i );
Then you can open it like this:
FILE *f = fopen( filename, "w");
...
fclose(f);
No need to use an array (if that's what you were trying to do with f(i)), because you're only keeping one file open at a time.
If you want your files to be text-sortable, you might want file001, file002 etc...  You can use %03d instead of %d to 0-pad to 3 digits.