main.c
and 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.h
in 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.c
you 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 $