Write a \"C\" program that will call a function that accepts three one dimension
ID: 3606984 • Letter: W
Question
Write a "C" program that will call a function that accepts three one dimensional arrays of characters (you decide on the size and the initial elements). The function should interleave the arrays and include an “*” in the resulting output. The resulting output should be placed into the third array.
Write a program that has a main function and a utility function called merge. The main function should prompt the user to enter two different strings (within reasonable length, no more than 50 character each). It should call the merge function that will interleave the first string and the second string and include an “*” to produce a third string. The merge stops with the shortest string. The main program should print out all the three strings after the function call as shown below.
Scenario 1
Enter string 1 : ABC
Enter string 2: 12345
Result after merge call
String 1 : ABC
String 2 : 12345
Merged string : A1*B2*C3*
Scenario 2
Enter string 1 : ABCDE
Enter string 2: 1234
Result after merge call
String 1 : ABCDE
String 2 : 1234
Merged string : A1*B2*C3*D4
Explanation / Answer
#include<stdio.h>
#include<string.h>
char* merge(char* string1, char* string2, char* resultString){
char asterisk = '*';
int i = 0;
int j = 0;
int resultArrSize = 0;
//To check which of the strings is having smaller size
//size_t is an unsigned data type, used to represent the size of an object.
size_t len1 = strlen(string1);
size_t len2 = strlen(string2);
if(len1 > len2)
{
resultArrSize = len2;
}
else if(len1 < len2)
{
resultArrSize = len1;
}
else
{
resultArrSize = len1;
}
//Use this format to print size_t value -- printf("%lu",len);
//Actual logic to merge the strings & the asterisk
while(i < resultArrSize)
{
resultString[j] = string1[i];
resultString[j+1] = string2[i];
if((i+1) < resultArrSize)
{
resultString[j+2] = asterisk; //merge * to resultString
j = j + 3;
}
else
{
resultString[j+2] = ''; //to terminate the resultString & avoid garbage value
}
i++;
}
return resultString;
}
int main(){
char string1[50];
char string2[50];
char resultString[150];
printf("Enter string 1 : ");
scanf("%s",string1);
printf("Enter string 2 : ");
scanf("%s",string2);
char* mergeResultString = merge(string1, string2, resultString);
printf(" Result after merge call");
printf(" %s %s %s",string1, string2, mergeResultString);
return 0;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.