|
ざっと作ったので間違いがあるかもしれませんが、取り敢えず
動きます。
#include <stdio.h>
#include <stdlib.h>
#define BUFLEN 1024
int main(int argc, char *argv[])
{
FILE *fi;
long *ptr;
char buf[BUFLEN];
int i, lc = 0;
if (argc < 2 || (fi = fopen(argv[1], "r")) == NULL)
exit(1);
while (fgets(buf, BUFLEN, fi)) lc++;
rewind(fi);
if ((ptr = (long *)malloc(lc * sizeof(long))) == NULL)
exit(1);
for (i = 0; i < lc; i++) {
ptr[i] = ftell(fi);
fgets(buf, BUFLEN, fi);
}
for (i = lc - 1; i >= 0; i--) {
fseek(fi, ptr[i], SEEK_SET);
fgets(buf, BUFLEN, fi);
printf(buf);
}
free(ptr);
return 0;
}
|