Lab 11
Lab assignment: Understanding C-string functions
We've given you some code with some functions to implement, to solidify your understanding of how string functions work. If you get it then great, there's extra credit to be earned. If you don't get it, you really need to understand how to develop algorithms to perform these transformations, even if you don't know how the algorithms work. Use this opportunity to think about how data is being stored and how you can access it to produce elegant algorithms. These sorts of questions are introductory interview questions, designed to allow you to demonstrate your thinking process.
Like with the standard library functions, you can assume all of the strings (char *) will be null terminated. I've given an example with mystrlen, which calculates the length of a string as strlen does, though there are many implementations which do the same thing so use the one you like best.
Stage 1 (1 point):
Implement strcpy in a function called mystrcpy.
Stage 2 (1 point):
Implement strncpy in a function called mystrncpy. Keep in mind that strncpy does not necessarily null terminate the destination string.
Stage 3 (Extra Credit) (1 point):
Implement a substring function which operates like strncpy but allows you to specify a beginning index and an ending index, as opposed to just a length to copy from the beginning of the string. The way I used it includes the character at the beginning index and the character at the ending index.
Stage 4 (Extra Extra Credit) (1 point):
Implement the function char** split(char[] origString, char delimiter)
Given a string, return an array of strings where each one is a substring between the beginning of the string and a delimiter, two delimiters, or a delimiter and the end of the string. If you get this far, ask Sean for more details, he's got a picture and everything.
Notes:
Keep in mind that this is a team effort so you should agree with your partner on what you are going to do before you start typing. The partner who is typing is the "driver" and the partner watching is the "navigator." Be sure to switch roles every 10 to 15 minutes, to foster a deep understanding of the code for both partners. The navigator should be watching for syntax errors and verifying the correctness of the code you're writing.
It will speed things up for you if you keep a window open for editing and have a separate window open for compiling and running your program. Remember that windows are resizeable!
Submission:
1. You should work with a partner for this (and all the remaining) lab(s). Only one of you need to submit the program to Blackboard, though you should be certain that both of your names be present in a comment at the top of the .c or .cpp source file.
1.5 If you work alone, include just your name in a comment at the top so that I know you worked alone, and not have to guess.
2. You should turn in to Blackboard by the END OF THE LAB (8:50 for the 8-9 lab session, 9:50 for the 9-10 lab session). I know it's tempting to keep working on it, but other classes come in, and it's not fair to the students who are limited to that particular time span if you go over. Which isn't to say that you can't work on it later, to check your solution against the one I post for your own understanding. But what you submit for a grade should be before the next hour begins.
3. If you wish, you may submit your lab by 11 am on Thursday for a 1 point penalty. If you can't finish up the second point by the end of lab, you can still earn the score by completing all three steps and submitting your code by the day after.