Add the following functions to the code:
oddsOnly - this function takes a string as an argument and it modifies this string in place (it does not return with the return statement) so that it deletes all characters that occupied even positions in the original string by shifting the characters that originally occupied odd positions. For example, if "hello there" were a parameter, then the updated string after the call to this function in the calling block would contain: "el hr". Don’t forget about the null character at the end of C strings and that strings in C could be simply treated as arrays of characters. Test this function by calling it from main.
Once the program runs properly, check for memory leaks and memory errors with Valgrind and apply more fixes, as needed
#include
#include
#include

char* repeated (char* original, int n);

int main(void) {

char *str = repeated("bon", 2);
printf("%s\n", str);
free(str);

char *str = repeated("bon", 3);
printf("%s\n", str);
free(str);

char *str = repeated("bon", 4);
printf("%s\n", str);
free(str);

return 0;

}

char* repeated (char* original, int n) {

int i, length = strlen(original);

char* newString = malloc (sizeof(char) * length * n + 1);

char* helper = newString;

for (i = 0; i < n; i++) {

strcpy( helper, original);

helper = helper + length;

}

return newString;

}

Respuesta :

Answer:

See explaination

Explanation:

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

void oddsOnly(char* str)

{

int i;

for (i = 0;i < strlen(str);i++)

{

if(i%2 != 0)

{

str[i/2] = str[i];

}

}

str[i/2] = '\0';

}

char* mySubstring(char* string ,int beginIndex,int endIndex)

{

char* new_string = malloc(endIndex- beginIndex);

for (int i = beginIndex ;i < endIndex;i++)

{

new_string[i -beginIndex] = string[i];

}

new_string[endIndex] = '\0';

return new_string;

}

int main(void)

{

char str[] = "hello there";

oddsOnly(str);

char* str1 = mySubstring("smiles",1,5);

printf("%s\n",str);

printf("%s\n",str1);

}