#include #include #include int main(int argc, char **argv) { off_t pos; FILE *f; unsigned long blkgroesse; unsigned long blknummer; /* Argumente pruefen */ if (argc < 5) return 1; /* zu wenig Argumente */ blkgroesse = strtoul(argv[2], 0, 0); if (blkgroesse == ULONG_MAX) return 1; /* ungueltiger Wert */ blknummer = strtoul(argv[3], 0, 0); if (blknummer == ULONG_MAX) return 1; /* ungueltiger Wert */ /* oeffnen */ f = fopen(argv[1], "r+"); if (f == NULL) return 1; /* An Schreibposition spulen */ pos = (off_t)(blkgroesse * blknummer); if (pos < blkgroesse) return 1; /* Integerueberlauf */ pos = fseek(f, pos, SEEK_SET); if (pos == (off_t)-1) return 1; fprintf(f, "%s", argv[4]); /* schreiben */ return 0; }