C program, bitpacker and its reverse app | cs240 | Purdue University

 

Suppose a text file contains ASCII characters ‘0’ and ‘1’ representing bits in human readable form. For example, test.txt may contain 111111110000000 which means its size is 16 bytes. A simple method for compressing the file by a factor of 8 is to represent a block of 8 ‘0’ or ‘1’ ASCII characters as a single byte. Thus test.txt which is 16 bytes long can be compressed into a file that is 2 bytes long where the first byte contains all 1’s and the second byte all 0’s. The resultant compressed file is a binary file since the first byte is not an ASCII character.

Code an app, bitpacker, that reads from stdin the input filename which follows the same specification as Problem 3. However, instead of using getchar(), use the library function fgets() whose the second argument allows specifying how many bytes, at most, should be read which helps prevent array overrun. Process the data in the input file 8 characters at a time by reading them into a 1-D array, char rawdat[8]. Compact the eight ‘0’ and ‘1’ characters in rawdat[] into a single byte using the bit processing techniques discussed in class. Write the resultant byte into an output file with suffix “.P”. For the above example, test.txt.P. We will allow the size of the input file not to be a multiple of 8. Since we are compacting 8 ASCII characters ‘0’ and ‘1’ into a single byte, we will use padding to handle files whose size is not a multiple of 8. For example, if text file test1.dat contains characters 1111111100000000111 (file size is 19 bytes), we will pad the last three characters 111 with 00000 so that the byte containing bit values 11100000 is written to test1.dat.P. To note that we padded the original data with five 0 bit values, we will change the suffix of the output file to test1.dat.P5. For test.txt where no padding was needed, the output filename will be test.txt.P0. Thus the last character of the filename specifies how much padding (0-7) was added.

Code bitpacker as a single main() function in main.c . Test and verify that it works correctlyCode an app, bitunpacker, that performs the reverse operation of bitpacker. bitunpacker reads the input filename from stdin using fgets() and checks that the suffix ends with .P[0-7] where [0-7] means that the last character must one of the digits 0, 1, …, 7. Strip the suffix in the name of the output file. Implement the app as a single main() function in main.c . Test and verify that it works correctly. 

Order a unique copy of this paper
(550 words)

Approximate price: $22

Basic features
  • Free title page and bibliography
  • Unlimited revisions
  • Plagiarism-free guarantee
  • Money-back guarantee
  • 24/7 support
On-demand options
  • Writer’s samples
  • Part-by-part delivery
  • Overnight delivery
  • Copies of used sources
  • Expert Proofreading
Paper format
  • 275 words per page
  • 12 pt Arial/Times New Roman
  • Double line spacing
  • Any citation style (APA, MLA, Chicago/Turabian, Harvard)

Our guarantees

We value our customers and so we ensure that what we do is 100% original..
With us you are guaranteed of quality work done by our qualified experts.Your information and everything that you do with us is kept completely confidential.

Money-back guarantee

You have to be 100% sure of the quality of your product to give a money-back guarantee. This describes us perfectly. Make sure that this guarantee is totally transparent.

Read more

Zero-plagiarism guarantee

The Product ordered is guaranteed to be original. Orders are checked by the most advanced anti-plagiarism software in the market to assure that the Product is 100% original. The Company has a zero tolerance policy for plagiarism.

Read more

Free-revision policy

The Free Revision policy is a courtesy service that the Company provides to help ensure Customer’s total satisfaction with the completed Order. To receive free revision the Company requires that the Customer provide the request within fourteen (14) days from the first completion date and within a period of thirty (30) days for dissertations.

Read more

Privacy policy

The Company is committed to protect the privacy of the Customer and it will never resell or share any of Customer’s personal information, including credit card data, with any third party. All the online transactions are processed through the secure and reliable online payment systems.

Read more

Fair-cooperation guarantee

By placing an order with us, you agree to the service we provide. We will endear to do all that it takes to deliver a comprehensive paper as per your requirements. We also count on your cooperation to ensure that we deliver on this mandate.

Read more

Calculate the price of your order

550 words
We'll send you the first draft for approval by September 11, 2018 at 10:52 AM
Total price:
$26
The price is based on these factors:
Academic level
Number of pages
Urgency