main.cand another named
strtok.c, and submit one .h file named
strtok.h. Document each properly. The programs for the two .c files are described below. The header file is to contain the function prototype for the function, strtok(), that you will be writing for this assignment. Be sure to #include
strtok.hin both .c files.
This assignment is due by midnight March 23, 1999.
Your function return its "internal pointer" as well as the terminating char as well as the next token as it parses a string passed to it. Otherwise, it behaves the same as the library function.
Here is the function prototype you are to use:
char * strtok( char *stringToParse, const char *terminatorSet, char **continuationString, char *terminatorChar );
strtok.c. If you try to put the statement,
#include <string.h>, in your
strtok.cyou will get a syntax error because of the conflicting prototypes for strtok() in "
strtok.h" and in the standard header file. I suggest that you deal with this by copying the prototypes you need from
<string.h>into your "
strtok.c". I used these two:
size_t strspn( const char *s, const char *set ); size_t strcspn( const char *s, const char *set );You will need
<stdlib.h>for the typedef of size_t.
Unlike the presentation in class on March 12, the assignment uses the same return value and first two parameters as the standard library's strtok() function. The third parameter is used for returning a pointer to the next part of the string being parsed. If there is nothing left to parse in the string, return a value of NULL for this pointer. The fourth pointer is used to return the character that terminated the token.
main.c, that gets strings from the user, and prints messages describing the command lines it read, using your strtok(), to do the parsing.
$ main Enter a command line: first cmd ; second cmd | third Command 1 was: "first cmd" It terminated with ';' Command 2 was: "second cmd" It terminated with '|' Command 3 was: "third" It terminated with '' Enter a command line: a command || b && c & Command 1 was: "a command" It terminated with '||' Command 2 was: "b" It terminated with '&&' Command 3 was "c" It terminated with '&' Enter a command line: ^C $