1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#define NOPOSITION (-1)
int main(int argc, char* argv[]) {
if (argc != 2 && argc != 4) {
fprintf(stderr, "Usage: %s <filename> [--from POSITION]\n", argv[0]);
return EXIT_FAILURE;
}
int from_position = NOPOSITION; // means didn't get --from
if(argc == 4 && strcmp(argv[2], "--from") == 0) {
from_position = atoi(argv[3]);
}
char* filename = argv[1];
FILE* fp = fopen(filename, "r"); // Will return NULL if doesn't exist
if(from_position != NOPOSITION) {
fseek(fp, from_position, SEEK_SET); // TODO: WHAT DO YOU PUT IN HERE?
};
int num_chars = 0;
while(true) {
int ch = fgetc(fp);
if(ch == EOF) {
break;
}
fputc(ch, stdout);
num_chars += 1;
};
int current_position = ftell(fp); // USE ftell(..) to find the
// location when we got to the end.
int num_chars_efficient = current_position - from_position;
printf("\n%d characters\n", num_chars);
printf("\n%d characters\n", num_chars_efficient);
return EXIT_SUCCESS;
}
/* vim: set tabstop=4 shiftwidth=4 fileencoding=utf-8 noexpandtab: */
/* vim: set tabstop=4 shiftwidth=4 fileencoding=utf8: */
|
© Copyright 2017 Alexander J. Quinn This content is protected and may not be shared, uploaded, or distributed.