#include #include #include void store(); void enumerate(); void recall(); int longest = 0; int posLongest = 0; int main(){ if((access("storage.txt",F_OK)) == 0){ printf("Error: storage file already exists."); return 1; EXIT_FAILURE; } store(); enumerate(); recall(); 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); } } fclose (fp); remove("storage.txt"); }