Question: Write a program that accepts two command line arguments. The first is the name of a file that is to be used as the input
Write a program that accepts two command line arguments. The first is the name of a file that is to be used as the input file and the second is the name of the output file. The program is to base-64 encode the first file, which is to be treated as a binary file, into the second. The first line of the output file, which is a text file, should contain the name of the first file (so that the reconstructed data can be placed in a file of the correct name later). Your program should print to the console the total number of bytes contained in the input file.
This is what i have. it take in a file and read it and then print same information onto another file, name does not mater.
#include
int BUFFER_SIZE = 3; FILE *source; FILE *destination; int n; int count = 0; int written = 0;
char map(unsigned value) { if (value < 26) return 'A' + value; if (value < 52) return 'a' + value - 26; if (value < 62) return '0' + value - 52; if (62 == value) return '+'; if (63 == value) return '/'; return '?'; }
unsigned unmap(char c) { if ('/' == c) return 63; if ('+' == c) return 62; if (isdigit(c)) return 52 + (c - '0'); if (islower(c)) return 26 + (c - 'a'); if (isupper(c)) return 0 + (c - 'A'); return 0xFFFFFFFF; }
int main(void) { char fname[128]; printf("Enter .txt file name to read "); scanf("%s",fname); strcat(fname,".txt"); source = fopen(fname,"rb"); char outname[128]; printf("Enter .txt file name to print "); scanf("%s",outname); strcat(outname,".txt"); destination = fopen(outname,"wb");
unsigned char buffer[BUFFER_SIZE]; unsigned data; int i = 0;
if (source) {
while (!feof(source)) { n = fread(buffer, 1, BUFFER_SIZE, source); count += n; data =buffer[0]; // printf("MSG : "); for (int i = 0; i < 3; i++) { // // buffer[i] = map(buffer[i]); printf(" %d", buffer[i]); } // printf("The contents of buffer[] are %s ", buffer); fwrite(buffer, 1, n, destination); } printf(" %d bytes read from library. ", count); } else { printf("fail "); }
fclose(source); fclose(destination);
return EXIT_SUCCESS; }
in the file i have 062434752
are teacher gave us
#include
char map(unsigned value) { if (value < 26) return 'A' + value; if (value < 52) return 'a' + value - 26; if (value < 62) return '0' + value - 52; if (62 == value) return '+'; if (63 == value) return '/'; return '?'; }
unsigned unmap(char c) { if ('/' == c) return 63; if ('+' == c) return 62; if (isdigit(c)) return 52 + (c - '0'); if (islower(c)) return 26 + (c - 'a'); if (isupper(c)) return 0 + (c - 'A'); return 0xFFFFFFFF; }
int main(void) { char *message = "Hello World!"; unsigned data = 062434752; // 0xCA35EA; char chars[4]; printf("DATA: %o ", data); for (int i = 0; i < 4; i++) { unsigned value = (data >> (18 - 6 * i)) & 077; chars[i] = map(value); } printf("MSG : "); for (int i = 0; i < 4; i++) { printf("%c", chars[i]); } printf(" "); data = 0; for (int i = 0; i < 4; i++) { unsigned value = unmap(chars[i]); data <<= 6; data += value; } printf("DATA: %o ", data);
return EXIT_SUCCESS; }
which print
DATA: 62434752 MSG : yjnq DATA: 62434752
-------------------------------- Process exited after 0.07087 seconds with return value 0 Press any key to continue . . .
the input file is the same but i can not seem to get the output file to print yjnq
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
