#include #include int apply(int i, int (*f)(int)); int add5(int i); int main(int argc, char *argv[]) { if (argc != 3) { fprintf(stderr,"Usage: %s number-file output-file\n",argv[0]); return 1; } FILE *fIn, *fOut; if ((fIn = fopen(argv[1],"r")) == NULL) { fprintf(stderr,"%s: Could not open %s for reading\n",argv[0], argv[1]); exit(2); } else if ((fOut = fopen(argv[2],"w")) == NULL) { fprintf(stderr,"%s: Could not open %s for writing\n",argv[0], argv[2]); return 3; } else { char input[128]; char output[128]; while (fgets(input, 128, fIn)) { sprintf(output,"%d\n",apply(atoi(input),&add5)); fputs(output,fOut); } fclose(fIn); fclose(fOut); } return 0; } int apply(int i, int (*f)(int)) { return (*f)(i); } int add5(int i) { return i + 5; }