Question: Part 2: argshift. [70 points] argshift is a program that takes a string as input, and shifts each letter in it forward by one letter

Part 2: argshift. [70 points] argshift is a program that takes a string as input, and shifts each letter in it forward by one letter (except z, which gets converted back to a). So, abcz should turn into bcda. This includes capital letters, but does not include non-alphabetical characetrs, such as punctuation, spaces and digits. For this, you should implement the following functions: char shift_char(char c) char* dup_shift(char* s) See the source code for more information about what each function should do. The memory space allocated for storing the return string should be dynamically allocated from the heap. You should allocate the least amount of space that can still hold the result. Your code should not change the string s. For this part you may use the standard library functions malloc, calloc, realloc, free and printf to manage dynamic memory allocation/deallocation and print the result. After you implement the function strdup ptr() correctly, your code should work as in the sample runs listed below: $./argshift Enter a string: Ludicrous Speed, Go! Mvejdspvt Tqffe, Hp! You should fix all memory leaks (if any) in the code. It is highly recommended that you look at an ASCII chart when doing this assignment. One may be found by running man ascii

#include #include #include

// return the length of a string // For example, // return 0 if s is "" // return 3 if s is "abc" unsigned long my_strlen(char *s) { unsigned long i = 0;

while (*s ++) i ++; return i; }

/* This should shift the 'a' to 'b', 'b' to 'c', ..., 'z' to 'a', as well as the capital letters. Don't shift non-alphabetical characters. */ char shift_char(char x){

}

/** Returns a pointer to a new string which is * a copy of the given string s. */ char* dup_shift(char* s) { }

int main(int argc, char *argv[]) { char input[100]; printf("Enter a string: "); scanf("%[^ ]s", input); char* dups_ptr = dup_shift(input); printf("%s ", dups_ptr); free(dups_ptr); return 0;

}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!