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 experiment to be written in different files for different values of a parameter. MWE should do something like this. Crate a file pointer indexed by i. Open a file named file[i]. Write i into that file and then close it. The code below obviously doesn't compile. Is such a construction even possible?
#include<stdio.h> int i; int main() { for (i = 0; i < 10; i++){ FILE *f(i); f(i)=fopen("file"[i],"w"); fprintf(f(i),"%d \n", i); fclose(f(i)); } return 0; }
Edit: I got several decent answers but can somebody help to fix the sprintf problem. Namely on OpenBSD which I use sprintf is not recommended. So I get this message
$ gcc test.c /tmp//ccN31aTv.o(.text+0x41): In function `main': : warning: sprintf() is often misused, please use snprintf()
When I replace sprintf with snprintf I get all sorts of warnings
$ gcc test.c test.c: In function 'main': test.c:9: warning: passing argument 2 of 'snprintf' makes integer from pointer without a cast test.c:9: warning: passing argument 3 of 'snprintf' makes pointer from integer without a cast
That doesn't look like a great quality code to me.
Final Solution: I just want to document final solution. ProPolice and systrace are happy with this code on OpenBSD. Thanks to everyone who helped!
#include<stdio.h> int i; char buf[20]; int main() { for (i = 0; i < 10; i++){ snprintf(buf, sizeof(buf), "filename%d", i); FILE *f = fopen( buf, "w"); fprintf(f,"%d \n", i); fclose(f); } return 0; }