Question

In: Computer Science

Make a modification of the program below, that will read in the string as a “command-line...

Make a modification of the program below, that will read in the string as a “command-line argument” to your program, instead of having the user type it while your program is running.

Your program should print out the inverted string to the screen.

#include <iostream>

#include <cstring>

using namespace std;

int Reverse(char * destination, const char * source, int num);

int main() // this is the test/driver code, for your function

{

const int STRINGSIZE = 10;

char oldCString[] = "Hello!";

char newCString[STRINGSIZE];

cout << "oldCString: " << oldCString << endl;

cout << "newCString before changing: " << oldCString << endl;

Reverse(newCString, oldCString, STRINGSIZE); // testing your function...

cout << "newCString after Reverse: " << newCString << endl;

return 0;

}

// Reverses a C-string passed in (source), and places the reversed

// C-string into (destination).

// (num) should represent the maximum valid length of (destination).

// If no null-zero character is found in (source) within (num-1)

// characters,the function will only read up to (num-1) characters

// from (source), and then copy the reversed characters to

// (destination) and append a null-zero to the end of it.

// The function will return the number of characters placed into

// (destination), including the null-zero.

// The function MUST use pointer notation (not array notation) inside

// it. However, you might find it useful to use array notation

// temporarily while developing the function, and then replace

// with pointer notation before turning in the assignment.

int Reverse(char * destination, const char * source, int num)

{

for (int x = 0; x < strlen(source); x++)

*( x + destination) = *( strlen(source) + source - 1 - x);

*(destination + strlen(source)) = '\0';

return 0;

}

For example, if you are running your program in the command window (by clicking the Start button, then typing in “cmd”, then pressing Enter, then using the “cd ” command to change to the appropriate directory where the compiler has placed your .exe executable file), a successful run might look like this:

M:\CS1113\Lab9>lab9.exe "This is a test"

tset a si sihT

If the user does not enter the string argument, your program should print out a brief “proper usage” message, which explains to the user the proper syntax of running your program, and which arguments to pass in. For example,

M:\CS1113\Lab9>lab9.exe

Welcome to our Lab 9 program which reverses a string!

To use this program, please use the following syntax:

      lab9.exe “input string”

M:\CS1113\Lab9>

Here is some sample code which reads in arguments from the command line, and just prints them out (taken from the example at http://www.cplusplus.com/forum/beginner/5404/#msg23839   )

#include <iomanip>

#include <iostream>

using namespace std;

int main( int argc, char* argv[] )

{

cout << "The name used to start the program: " << argv[ 0 ]

      << "\nArguments are:\n";

for (int n = 1; n < argc; n++)

    cout << setw( 2 ) << n << ": " << argv[ n ] << '\n';

return 0;

}

You may encounter errors in passing in the arguments.   If you are using the command window (cmd.exe) on your computer (not the remote server) to run the program, make sure you build your program in “Release” mode, rather than “Debug” mode as we have typically done. This changes the default .dll libraries used by the program to the ones included in Windows.

Solutions

Expert Solution

#include <iomanip>
#include <iostream>
#include <cstring>
using namespace std;
int Reverse(char * destination,  char * source, int num);
int main( int argc, char* argv[] )
{
    int STRINGSIZE = 10;
    char newCString[STRINGSIZE];
    
cout << "The name used to start the program: " << argv[ 0 ]
      << "\nArguments are:\n";
for (int n = 1; n < argc; n++)
    cout << setw( 2 ) << n << ": " << argv[ n ] << '\n';


cout << "oldCString: " << argv[1] << endl;

cout << "newCString before changing: " << argv[1] << endl;

Reverse(newCString, argv[1], STRINGSIZE); // testing your function...

cout << "newCString after Reverse: " << newCString << endl;


return 0;
}

int Reverse(char * destination,  char * source, int num)
{
for (int x = 0; x < strlen(source); x++)
*( x + destination) = *( strlen(source) + source - 1 - x);

*(destination + strlen(source)) = '\0';

return 0;
}

Output:


Related Solutions

program c Write a program called filesearch that accepts two command-line arguments: A string A filename...
program c Write a program called filesearch that accepts two command-line arguments: A string A filename If the user did not supply both arguments, the program should display an error message and exit. The program opens the given filename. Each line that contains the given string is displayed. Use the strstr function to search each line for the string. You may assume no line is longer than 255 characters. The matching lines are displayed to standard output (normally the screen).
Write a program Median.java to read each file whose name is specified in the command-line arguments....
Write a program Median.java to read each file whose name is specified in the command-line arguments. That is, for each command-line argument, open it as a file and read it. The file contents are zero or more lines each containing a list of comma-separated integers, such as 1,2,3,4 or 99,120,33. You should parse each of these integers and save them in an ArrayList (if you prefer you may use an array, but an ArrayList is likely to be easier for...
Write a C program that will read a character string and then encrypt the string based...
Write a C program that will read a character string and then encrypt the string based on one of the 3 different encryption methods. The type of encryption is to be selected by the user. Encryption method 1: Swapping by position. Characters in the array are swapped with the opposite characters based on their position in the string. Example: Input string – apple. Encrypted string – elppa Method: The first character ‘a’ and the last character ‘e’ – swap their...
Write a program that takes two command line arguments at the time the program is executed....
Write a program that takes two command line arguments at the time the program is executed. You may assume the user enters only decimal numeric characters. The input must be fully qualified, and the user should be notified of any value out of range for a 23-bit unsigned integer. The first argument is to be considered a data field. This data field is to be is operated upon by a mask defined by the second argument. The program should display...
Introduction Write in C++ at the Linux command line a program that is the same as...
Introduction Write in C++ at the Linux command line a program that is the same as the previous collection app project but now uses a class to store the items and also can save the items to a file that can be read back into the array by the user when the program is re-started. You can use your project 1 submission as a starting point or you can do something new as long as it meets the listed requirements....
A C program that accepts a single command line argument and converts it in to binary...
A C program that accepts a single command line argument and converts it in to binary with array length of 16 bits. The array should contain the binary of the int argument. the program should also convert negative numbers. Side note the command line arg is a valid signed int.
Fix this broken code? # Get our input from the command line import sys string =...
Fix this broken code? # Get our input from the command line import sys string = sys.argv[1] # Your code goes here if string 'Bingo' print('Missed') else: print('Hit!')
Write a program that prints the sum of its command-line arguments (assuming they are numbers). For...
Write a program that prints the sum of its command-line arguments (assuming they are numbers). For example, java Adder 3 2.5 -4.1 should print The sum is 1.4
Write a program that takes an integer N from the command line and uses StdRandom.uniform() to...
Write a program that takes an integer N from the command line and uses StdRandom.uniform() to generate a random sequence of integers be- tween 0 and N – 1. Run experiments to validate the hypothesis that the number of integers generated before the first repeated value is found is ~√?N/2.
16.15 Lab 5: filter Name this program filter.c. The program takes two command line arguments: the...
16.15 Lab 5: filter Name this program filter.c. The program takes two command line arguments: the name of an input file and the name of an output file. The program should confirm the input and output files can be opened. If a file cannot be opened, print the error message Cannot open file '<filename>' where <filename> is the name of the file and return. fopen() will return 0 if it fails to open a file. Then, the program will read...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT