Project-Scylla/KNR C/ex1_17.c

75 lines
1.1 KiB
C
Raw Permalink Normal View History

#include <stdio.h>
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);
}
}
}