Ciao, grazie della risposta,
Ha assolutamente ragione, ho sbagliato a scrivere l'istruzione, quello che ho mandato è una write()( non una open()) . Per la mia difesa, erano le 3 di mattina ed ero distrutta .
A dire la verità, per me la sprintf serviva per concatenare più output in una stringa, da ritornare alla fine per esempio.
int fd[NUM_FILE];
for (int i = 0; i < NUM_FILE; i++)
{
char MA[4];// 3 caratteri per MAi + 1 caratere per fine stringa \0
sprintf(MA, "MA%d", i);
fd[i] = open(MA,O_CREAT|O_RDWR,0777);
if (fd[i]==-1)
{
printf("errno=%d\n",errno);
perror("main");
}
r=write(fd[i], "0",1);
}