Character Processing Program


Write a program that performs character processing on 10 characters read in from a file, and writes the results to output files. Do NOT use loops or arrays to solve this problem.

NOTE: You may NOT use the standard library functions found in <ctype.h>.

Your program should define the following functions:

(2 pts) FILE * open_input_file (void) — Opens “input.dat” for reading.

(2 pts) char read_character (FILE *infile) — Reads one character from the input file. Precondition: the input file must already be open!

(2 pts)  int determine_ascii_value (char character) — Returns the ASCII value of the character passed into the function.

(4 pts) int is_line (char character) — Determines if the character is a newline, if the character is a newline a 1 is returned otherwise a 0 is returned.

Make sure that you #define two constants NEWLINE and NOT_NEWLINE as 1 and 0, respectively. Return the #defined constant.

(4 pts) int number_lines (char character, int current_number_lines) — Determines if the character passed into the function indicates the end of a line  (use is_line ( )),

if so the function adds 1 to the current_number_lines and returns the value; otherwise it returns the current_number_lines without any modification.

(4 pts) int is_vowel (char character) — Determines if the character is a vowel (note: the character may be lower or upper case), if the character is a vowel a 2 is returned otherwise a 0 is returned.

Make sure that you #define two constants VOWEL and NOT_VOWEL as 2 and 0, respectively. Return the #defined constant.

(4 pts) int number_vowels (char character, int current_number_vowels) — Determines if the character passed into the function is a vowel (use is_vowel ( )),

if so the function adds 1 to the current_number_vowels and returns the value; otherwise it returns the current_number_vowels without any modification.

(4 pts) int is_digit (char character) — Determines if the character is a digit (i.e. ‘0’ – ‘9’), if the character is a digit a 3 is returned otherwise a 0 is returned.

Make sure that you #define two constants DIGIT and NOT_DIGIT as 3 and 0, respectively. Return the #defined constant.

(4 pts) int number_digits (char character, int current_number_digits) — Determines if the character passed into the function is a digit (use is_digit ( )),

if so the function adds 1 to the current_number_digits and returns the value; otherwise it returns the current_number_digits without any modification.

(4 pts) int is_alpha (char character) — Determines if the character is an alpha character (i.e. ‘a’ – ‘z’, ‘A’ – ‘Z’), if the character is an alpha character a 4 is returned otherwise a 0 is returned.

Make sure that you #define two constants ALPHA and NOT_ALPHA as 4 and 0, respectively. Return the #defined constant.

(4 pts) int number_alphas (char character, int current_number_alphas) — Determines if the character passed into the function is an alpha character (use is_alpha ( )),

if so the function adds 1 to the current_number_alphas and returns the value; otherwise it returns the current_number_alphas without any modification.

(4 pts) int is_lower (char character) – Determines if the character is a lowercase character, if the character is a lowercase character a 5 is returned otherwise a 0 is returned.

Make sure that you #define two constants LOWER and NOT_LOWER as 5 and 0, respectively. Return the #defined constant.

(4 pts) int number_lowers (char character, int current_number_lowers) — Determines if the character passed into the function is a lowercase character (use is_lower ( )),

if so the function adds 1 to the current_number_lowers and returns the value; otherwise it returns the current_number_lowers without any modification.

(4 pts) int is_upper (char character) – Determines if the character is an uppercase character, if the character is an uppercase character a 6 is returned otherwise a 0 is returned.

Make sure that you #define two constants UPPER and NOT_UPPER as 6 and 0, respectively. Return the #defined constant.

(4 pts) int number_uppers (char character, int current_number_uppers) — Determines if the character passed into the function is a uppercase character (use is_upper ( )),

if so the function adds 1 to the current_number_uppers and returns the value; otherwise it returns the current_number_uppers without any modification.

(4 pts) int is_space (char character) – Determines if the character is a whitespace character (i.e. space ‘ ‘, form feed ‘\f’, new-line ‘\n’, carriage return ‘\r’, horizontal tab ‘\t’, and vertical tab ‘\v’),

if the character is a whitespace character a 7 is returned otherwise a 0 is returned.  Make sure that you #define two constants WHITESPACE and NOT_WHITESPACE as 7 and 0, respectively.

Return the #defined constant.

(4 pts) int number_spaces (char character, int current_number_spaces) — Determines if the character passed into the function is a space character (use is_space ( )),

if so the function adds 1 to the current_number_spaces and returns the value; otherwise it returns the current_number_spaces without any modification.

(4 pts) int is_alnum (char character) – Determines if the character is an alpha or digit character, if the character is an alpha or digit character a 8 is returned otherwise a 0 is returned.

Make sure that you #define two constants ALNUM and NOT_ALNUM as 8 and 0, respectively. Return the #defined constant.

(4 pts) int number_alnums (char character, int current_number_alnums) — Determines if the character passed into the function is an alphanumeric character (use is_alnum ( )),

if so the function adds 1 to the current_number_alnums and returns the value; otherwise it returns the current_number_alnums without any modification.

(4 pts) int is_punct (char character) – Determines if the character is a punctuation character (i.e. ‘.’, ‘!’, ‘,’, etc.) if the character is a punctuation character an 9 is returned otherwise a 0 is returned.

Make sure that you #define two constants PUNCT and NOT_PUNCT as 9 and 0, respectively. Return the #defined constant.

(4 pts) int number_puncts (char character, int current_number_puncts) — Determines if the character passed into the function is a punctuation character (use is_punct ( )),

if so the function adds 1 to the current_number_puncts and returns the value; otherwise it returns the current_number_puncts without any modification.

(3 pts) void print_int (FILE *outfile, int number) — Prints an integer to an output file.

(3 pts) void print_stats (FILE *outfile, char header[ ], int number) — Prints a line like the following:

Number Vowels: 45

where “Number of vowels” is the string represented by the variable header and 45 is represented by number.

 (10 pts) A main function that does the following:

Opens an input file input.dat for reading;
Opens an output file output_stats.dat for writing all data generated by print_stats ( );
Opens an output file output_ascii.dat for writing all ascii values of each character;
Checks to see if the files were opened successfully
Reads one character at a time from the input file (input.dat), until all 10 characters have been read; For each character that is read in, its corresponding ASCII value should be printed to the output file, output_ascii.dat; Hint: use the print_int ( ) function to print the ASCII values;
Prints the number of lines in the file to output_stats.dat;
Prints the number of vowels in the file to output_stats.dat;
Prints the number of digits in the file to output_stats.dat;
Prints the number of alpha characters in the file to output_stats.dat;
Prints the number of lowercase characters in the file to output_stats.dat;
Prints the number of uppercase characters in the file to output_stats.dat;
Prints the number of space characters in the file to output_stats.dat;
Prints the number of alphanumeric characters in the file to output_stats.dat;
Prints the number of punctuation characters in the file to output_stats.dat;
Closes all opened files;

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *



  • Type of File: .c (C source file), .h (header file)
  • Compiler Used: gcc (GNU C compiler)
  • Customization Available: Yes, Write to info@libraay.com for change in compiler/code files as custom solution after purchase