Your third deliverable is a Cprogram (MyCommand3.c) that: The argumentArray is d
ID: 3585827 • Letter: Y
Question
Your third deliverable is a Cprogram (MyCommand3.c) that: The argumentArray is defined as follows: char **argument rray = NULL ; Allocate a place holder for each element in the argumentArray: argumentArray= Allocate the right size for each argument (based on the user input): argumentArraylargIndex) = (char * ) malloc( (strlen (argv [argIndex]) * sizeof (char)); Copy the values typed by the user to the argumentArray (Figure 4) - (char**) malloc( (arge+1) * sizeof (char*)); - + 1) argumentArray NULL Figure 4- argumentArray populated after running: MyCommand3 UMass RPI SUNY Harvard - Print the arguments (see example in Figure 5) $MyCommand3 UMass RPI SUNY Harvard argumentArray[]: MyCommand3 argumentArray[1]: UMass argumentArray[21: RPI argumentArray[3] SUNY argumentArray[4]: Harvard $MyCommand3 UMass RPI SUNY Harvard Rochester MIT argumentArray[e]: MyCommand3 argumentArrav11: UMass argumentArray[2]: RPI argumentArray[31: SUNY argumentArray[41: Harvard argumentArray[5] Rochester argumentArray[61: MIT Figure 5- Output of MyCommand3 Important: make sure to free the space you allocate before vour program exitsExplanation / Answer
#include <stdio.h>
int main(int argc, char * argv []) {
int argIndex;
char **argumentArray = NULL;
argumentArray = (char **) malloc((argc+1) * sizeof(char *));
for(argIndex=0; argIndex<argc; argIndex++) {
argumentArray[argIndex] = (char *)malloc((strlen(argv[argIndex]) + 1) * sizeof(char));
strcpy(argumentArray[argIndex], argv[argIndex]);
}
// make last element NULL
argumentArray[argc] = NULL;
for(argIndex=0; argIndex<argc; argIndex++) {
// print values
printf("argumentArray[%d]: %s ",argIndex, argumentArray[argIndex]);
// free inner array
free(argumentArray[argIndex]);
}
// free outer array
free(argumentArray);
return 0;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.