Ciao, nel codice ci sono cose che non vanno. Ad esempio la funzione fgetc() ritorna un int e non un char. Oppure la funzione fputc ritorna un int e poi come parametri devi passargli lo stesso un int e un * a FILE. Questo valore int è il corrispondente codice codice ascii del carattere che vuoi scrivere o leggere nel caso della fgetc.
Il valore che ritorna la fputc è lo stesso che gli hai passato come parametro se la funzione è andata a buon fine altrimenti ritorna EOF.
Poi un altra cosa che non riesco a capire è l'uso della variabile udm.
Un altra cosa...
char *fs_output;
è un puntatore a char che non punta mai a niente. Bisogna fare la new oppure crei un vettore:
char fs_output[256];
in questo modo puoi benissimo fare una sprintf(fs_output,"output%d",n);
comunque il codice può essere più semplice:
#include <stdio.h>
int main(){
FILE *input, *output;
char fs_output[126]={'\0'};
int carattere;
int k, n, i;
input=fopen("prova.txt", "r");
k=100;
n=0;
while (!feof(input)) {
sprintf(fs_output, "/files/output%d", n);
output = fopen (fs_output, "w");
for (i=0; i<k && (carattere=fgetc(input)!= EOF); i++){
fputc(carattere, output);
}
fclose(output);
n++;
}
fclose(input);
return 0;
}
ciao.