Question: Your task is to develop a C program, called ascii2bin, that reads a string of 1's and 0's as ASCII digits, and outputs the equivalent
Your task is to develop a C program, called ascii2bin, that
- reads a string of 1's and 0's as ASCII digits, and
- outputs the equivalent unsigned decimal number
Your program must
- exercises the read() system call to read a single byte, at a time, from stdin
- validate that the read byte is appropriate for conversion, e.g., it must be either an ASCII '0' or '1'
- converts each byte into an integer value via a mathematical expression
- uses the resulting integer as part of the calcuation to determine the final number
- identifies the end of a input string by either end of file or by a new line
- End of file is detected when read() returns the value '0'
- A new line is identified in the ASCII table as either: newline, nl, LF, or '
- prints this final unsigned number on stdout
- returns a value of 0 upon success and 1 otherwise
Algorithm:
offset = ?; number = 0; retval = read(0, &ascii_value, 1); while (retval == 1) digit = ascii_value - offset; number = (number << 1) + digit; retval = read(0, &ascii_value, 1); printf("%u ", number); return 0; Validation Checks:
You should add additional validation checks to your code to catch potential errors. At a minimum, validate the following:
- that each ASCII input character is one of the following characters: '0', '1', or ' '
- that the calculated number does not exceed 2^32
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
