In C language, implement the following two functions that allow breaking a string into non-empty tokens using a given delimiter. For example,
In C language, implement the following two functions that allow breaking a string into non-empty tokens using a given delimiter. For example,
- For a string "abc-EFG-hi", and a delimiter '-': the list of tokens is ["abc", "EFG", "hi"]
- For a string "abc-EFG---hi-", and a delimiter '-': the list of tokens is ["abc", "EFG", "hi"]
- For a string "abc", and a delimiter ' ': the list of tokens is ["abc"]
- For a string "++abc++", and a delimiter '+': the list of tokens is ["abc"]
That is, we break the string using the given delimiter, and the tokens are only the non-empty substrings.
1. The function count_tokens gets a string str, and a char delim, and returns the number of tokens in the string separated by delim.
int count_tokens(const char* str, char delim);
For example
- count_tokens("abc-EFG--", '-') needs to return 2.
- count_tokens("++a+b+c", '+') needs to return 3.
- count_tokens("***", '*') needs to return 0.
2. The function get_tokens gets a string str, and a char delim, and returns the array with the tokens in the correct order. The length of the array should be the number of tokens, computed in count_tokens.
char** get_tokens(const char* str, char delim);
For example:
- get_tokens("abc-EFG--", '-') needs to return ["abc", "EFG"]
- get_tokens("++a+b+c", '+') needs to return ["a", "b", "c"]
- get_tokens("***", '*') needs to return either NULL or an empty array
Remark: Note that the returned array and the strings in it must all be dynamically allocated.
Step by step
Solved in 2 steps with 1 images