#include #include #include #include #include #include int main(int argc, char **argv) { int BUFSIZE = 3, n, i, fd; char c[BUFSIZE]; if ((argc - 1) % 2 != 0) { printf("non pari\n"); exit(EXIT_FAILURE); } memset(c, 0, BUFSIZE); for (i = 1; i <= (argc - 1) / 2; i++) { fd = open(argv[i], O_RDONLY); if (fd < 1) { printf("errore file %s\n", argv[i]); exit(EXIT_FAILURE); } lseek(fd, (long)(i - 1), SEEK_SET); n = read(fd, c, 1); if (n <= 0) { printf("errore nella read\n"); exit(EXIT_FAILURE); } close(fd); fd = open(argv[argc - i], O_RDONLY); if (fd < 1) { printf("errore file %s\n", argv[argc - i]); exit(EXIT_FAILURE); } lseek(fd, (long)-i, SEEK_END); n = read(fd, c + 1, 1); if (n <= 0) { printf("errore nella read\n"); exit(EXIT_FAILURE); } close(fd); printf("%s", c); } printf("\n"); exit(EXIT_SUCCESS); }