diff --git a/KNR C/ex1-16-2.c b/KNR C/ex1-16-2.c new file mode 100644 index 0000000..0ad19dd --- /dev/null +++ b/KNR C/ex1-16-2.c @@ -0,0 +1,73 @@ +#include + +void store(); +void enumerate(); +void recall(); +int longest = 0; +int posLongest = 0; + +int main(){ + store(); + enumerate(); + return 0; +} + +void store(){ + + FILE *fp; + fp = fopen("storage.txt", "w"); + + int i = 0; + for(int c = getchar(); c != EOF; c = getchar()){ + fputc(c, fp); + } + fclose(fp); +} + + +//void enumerate() will step through the file and write the value of the +//longest line encountered to int longest and the position (in terms of line +//number) in the file. +void enumerate(){ + + int position = 1; + int length = 0; + + FILE *fp; + fp = fopen ("storage.txt", "r"); + for(int c = fgetc(fp); c != EOF; c = fgetc(fp)) + if(c != '\n'){ + ++length; + continue; + } else if(c == '\n' && length > longest){ + longest = length; + length = 0; + posLongest = position; + ++position; + } else if (c == '\n' && length < longest){ + ++position; + length = 0; + } + fclose (fp); +} + +void recall (){ + FILE *fp; + fp = fopen("storage.txt", "r"); + + int position = 1; + + for(int c = fgetc(fp);; c = fgetc(fp)){ + if(position > posLongest) + break; + + if(c == '\n'){ + ++position; + continue; + } + + if(position == posLongest){ + putchar(c); + } + } +} diff --git a/KNR C/ex1-17.c b/KNR C/ex1-17.c new file mode 100644 index 0000000..0ad19dd --- /dev/null +++ b/KNR C/ex1-17.c @@ -0,0 +1,73 @@ +#include + +void store(); +void enumerate(); +void recall(); +int longest = 0; +int posLongest = 0; + +int main(){ + store(); + enumerate(); + return 0; +} + +void store(){ + + FILE *fp; + fp = fopen("storage.txt", "w"); + + int i = 0; + for(int c = getchar(); c != EOF; c = getchar()){ + fputc(c, fp); + } + fclose(fp); +} + + +//void enumerate() will step through the file and write the value of the +//longest line encountered to int longest and the position (in terms of line +//number) in the file. +void enumerate(){ + + int position = 1; + int length = 0; + + FILE *fp; + fp = fopen ("storage.txt", "r"); + for(int c = fgetc(fp); c != EOF; c = fgetc(fp)) + if(c != '\n'){ + ++length; + continue; + } else if(c == '\n' && length > longest){ + longest = length; + length = 0; + posLongest = position; + ++position; + } else if (c == '\n' && length < longest){ + ++position; + length = 0; + } + fclose (fp); +} + +void recall (){ + FILE *fp; + fp = fopen("storage.txt", "r"); + + int position = 1; + + for(int c = fgetc(fp);; c = fgetc(fp)){ + if(position > posLongest) + break; + + if(c == '\n'){ + ++position; + continue; + } + + if(position == posLongest){ + putchar(c); + } + } +}