83 lines
1.3 KiB
C
83 lines
1.3 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
|
|
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");
|
|
}
|