#include <stdio.h>
#define INPUT_FILE 1 //define statements
#define OUTPUT_FILE 2
#define NUM_TO_SHIFT 3
#define ENCODE 4
#define QUIT 0
int menu( ) ; //function prototypes
int input( ) ;
int output( ) ;
int shift( ) ;
int encode( ) ;
void quit( ) ;
int main( )
{
int choice; // main variables
char user_filename[ 100 ] ;
choice = menu( ) ; // get user's first selection
while ( choice != QUIT) //execute so long as choice is not equal to QUIT
{
switch ( choice)
{
case INPUT_FILE:
printf ( "Enter the filename of the file to encode:\n " ) ; printf ( "(hit the Enter key when done)\n " ) ; //gets(user_filename);
scanf ( "%s" , user_filename
) ; printf ( "Getting %s\n " , user_filename
) ; break ;
case OUTPUT_FILE: output( ) ;
break ;
case NUM_TO_SHIFT: shift( ) ;
break ;
case ENCODE: encode( ) ;
break ;
case QUIT: quit( ) ;
break ;
default : printf ( "Oops! An invalid choice slipped through. " ) ; printf ( "Please try again.\n " ) ; }
choice = menu( ) ; /* get user's subsequent selections */
}
return 0 ;
}
int menu( void )
{
int option;
printf ( "Text Encoder Service\n \n " ) ; printf ( "1.\t Enter name of input file (currently 'Secret.txt')\n " ) ; printf ( "2.\t Enter name of output file (currently not set)\n " ) ; printf ( "3.\t Enter number of characters data should be shifted (currently +7)\n " ) ; printf ( "4.\t Encode the text\n \n " ) ; printf ( "Make your selection: " ) ;
while ( ( scanf ( " %d" , & option
) != 1 ) /* non-numeric input */ || ( option < 0 ) /* number too small */
|| ( option > 4 ) ) /* number too large */
{
fflush ( stdin
) ; /* clear bad data from buffer */ printf ( "That selection isn't valid. Please try again.\n \n " ) ; }
printf ( "Selecting %d\n " , option
) ; return option;
}
int input( )
{
}
int output( )
{
return 2 ;
}
int shift( )
{
return 3 ;
}
int encode( )
{
return 4 ;
}
void quit( )
{
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNkZWZpbmUgSU5QVVRfRklMRSAxICAgIC8vZGVmaW5lIHN0YXRlbWVudHMKI2RlZmluZSBPVVRQVVRfRklMRSAyCiNkZWZpbmUgTlVNX1RPX1NISUZUIDMKI2RlZmluZSBFTkNPREUgNAojZGVmaW5lIFFVSVQgMAoKaW50IG1lbnUoKTsgICAgIC8vZnVuY3Rpb24gcHJvdG90eXBlcwppbnQgaW5wdXQoKTsKaW50IG91dHB1dCgpOwppbnQgc2hpZnQoKTsKaW50IGVuY29kZSgpOwp2b2lkIHF1aXQoKTsKCmludCBtYWluKCkKewogICAgaW50IGNob2ljZTsgICAgIC8vIG1haW4gdmFyaWFibGVzCiAgICBjaGFyIHVzZXJfZmlsZW5hbWVbMTAwXTsKCiAgICBjaG9pY2UgPSBtZW51KCk7ICAgLy8gZ2V0IHVzZXIncyBmaXJzdCBzZWxlY3Rpb24KCiAgICB3aGlsZShjaG9pY2UgIT0gUVVJVCkgICAvL2V4ZWN1dGUgc28gbG9uZyBhcyBjaG9pY2UgaXMgbm90IGVxdWFsIHRvIFFVSVQKICAgIHsKICAgICAgICBzd2l0Y2goY2hvaWNlKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjYXNlIElOUFVUX0ZJTEU6CiAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJFbnRlciB0aGUgZmlsZW5hbWUgb2YgdGhlIGZpbGUgdG8gZW5jb2RlOlxuIik7CiAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIoaGl0IHRoZSBFbnRlciBrZXkgd2hlbiBkb25lKVxuIik7CiAgICAgICAgICAgICAgICAgICAgLy9nZXRzKHVzZXJfZmlsZW5hbWUpOwogICAgICAgICAgICAgICAgICAgIHNjYW5mKCIlcyIsIHVzZXJfZmlsZW5hbWUpOwogICAgICAgICAgICAgICAgICAgIHByaW50ZigiR2V0dGluZyAlc1xuIiwgdXNlcl9maWxlbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIE9VVFBVVF9GSUxFOiBvdXRwdXQoKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgTlVNX1RPX1NISUZUOiBzaGlmdCgpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSBFTkNPREU6IGVuY29kZSgpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSBRVUlUOiBxdWl0KCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0OiAgICBwcmludGYoIk9vcHMhIEFuIGludmFsaWQgY2hvaWNlIHNsaXBwZWQgdGhyb3VnaC4gIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIlBsZWFzZSB0cnkgYWdhaW4uXG4iKTsKICAgICAgICAgICAgfQogICAgICBjaG9pY2UgPSBtZW51KCk7IC8qIGdldCB1c2VyJ3Mgc3Vic2VxdWVudCBzZWxlY3Rpb25zICovCiAgIH0KCiAgIHByaW50ZigiQnllIGJ5ZSFcbiIpOwogICByZXR1cm4gMDsKfQoKaW50IG1lbnUodm9pZCkKewogICAgaW50IG9wdGlvbjsKCiAgICBwcmludGYoIlRleHQgRW5jb2RlciBTZXJ2aWNlXG5cbiIpOwogICAgcHJpbnRmKCIxLlx0RW50ZXIgbmFtZSBvZiBpbnB1dCBmaWxlIChjdXJyZW50bHkgJ1NlY3JldC50eHQnKVxuIik7CiAgICBwcmludGYoIjIuXHRFbnRlciBuYW1lIG9mIG91dHB1dCBmaWxlIChjdXJyZW50bHkgbm90IHNldClcbiIpOwogICAgcHJpbnRmKCIzLlx0RW50ZXIgbnVtYmVyIG9mIGNoYXJhY3RlcnMgZGF0YSBzaG91bGQgYmUgc2hpZnRlZCAoY3VycmVudGx5ICs3KVxuIik7CiAgICBwcmludGYoIjQuXHRFbmNvZGUgdGhlIHRleHRcblxuIik7CiAgICBwcmludGYoIjAuXHRRdWl0XG5cbiIpOwogICAgcHJpbnRmKCJNYWtlIHlvdXIgc2VsZWN0aW9uOiAiKTsKCiAgICB3aGlsZSggKHNjYW5mKCIgJWQiLCAmb3B0aW9uKSAhPSAxKSAvKiBub24tbnVtZXJpYyBpbnB1dCAqLwogICAgICAgICAgfHwgKG9wdGlvbiA8IDApICAgICAgICAgICAgICAgLyogbnVtYmVyIHRvbyBzbWFsbCAqLwogICAgICAgICAgfHwgKG9wdGlvbiA+IDQpKSAgICAgICAgICAgICAgLyogbnVtYmVyIHRvbyBsYXJnZSAqLwogICAgewogICAgICBmZmx1c2goc3RkaW4pOyAgICAgICAgICAgICAgICAgICAgLyogY2xlYXIgYmFkIGRhdGEgZnJvbSBidWZmZXIgKi8KICAgICAgcHJpbnRmKCJUaGF0IHNlbGVjdGlvbiBpc24ndCB2YWxpZC4gUGxlYXNlIHRyeSBhZ2Fpbi5cblxuIik7CiAgICAgIHByaW50ZigiWW91ciBjaG9pY2U/ICIpOwogICAgfQogICAgcHJpbnRmKCJTZWxlY3RpbmcgJWRcbiIsIG9wdGlvbik7CiAgICByZXR1cm4gb3B0aW9uOwp9CgppbnQgaW5wdXQoKQp7Cgp9CgppbnQgb3V0cHV0KCkKewogICAgcmV0dXJuIDI7Cn0KCmludCBzaGlmdCgpCnsKICAgIHJldHVybiAzOwp9CgppbnQgZW5jb2RlKCkKewogICAgcmV0dXJuIDQ7Cn0KCnZvaWQgcXVpdCgpCnsKICAgIHByaW50ZigiUXVpdGluZy4uLkJ5ZSEiKTsKICAgIGV4aXQoMCk7Cn0=