ao_string_tokenize(3)
πΈ NAME πΈ
Bestie, meet ao_string_tokenize from the Programmer's Manual β the ao_string_tokenize(3) page, specifically. It does exactly what it says on the tin: ao_string_tokenize β tokenize an input string. β¨
β¨ SYNOPSIS β¨
#include <your-opts.h>
cc [...] -o outfile infile.c -lopts [...]
token_list_t * ao_string_tokenize(char const * string);
π¦ DESCRIPTION π¦
Okay so this function takes one input string and turns it into a list of strings. The list of strings is derived by separating the input based on white space separation. But here's the plot twist: if the input contains either single or double quote characters, then the text after that character up to a matching quote will become the string in the list. It's giving respect the quotes energy. π
The returned pointer should be deallocated with free(3C) when you're done using the data. The data are placed in a single block of allocated memory. Do not deallocate individual token/strings. Literally one free(3C) for the whole situation, bestie. π«Ά
The structure pointed to will contain at least these two fields:
tkn_ctβ The number of tokens found in the input string.tok_listβ An array oftkn_ct + 1pointers to substring tokens, with the last pointer set toNULL.
There are two types of quoted strings: single quoted (') and double quoted ("). Singly quoted strings are fairly raw in that escape characters (\) are simply another character, except when preceding the following characters:
\ double backslashes reduce to one
' incorporates the single quote into the string
0fP suppresses both the backslash and newline character
Double quote strings are formed according to the rules of string constants in ANSI-C programs. π
string β the string to be tokenized.
π₯ RETURN VALUE π₯
Pointer to a structure that lists each token. Yep, that's the whole vibe. π
π ERRORS π
NULL is returned and errno will be set to indicate the problem:
EINVALβ There was an unterminated quoted string.ENOENTβ The input string was empty.ENOMEMβ There is not enough memory.@end itemize
Yes, that stray @end itemize is literally in the original ERRORS section, so it stays. No cap. π
π EXAMPLES π
#include <stdlib.h>
int ix;
token_list_t * ptl = ao_string_tokenize(some_string)
for (ix = 0; ix < ptl->tkn_ct; ix++)
do_something_with_tkn(ptl->tkn_list[ix]);
free(ptl);
Note that everything is freed with the one call to free(3C). Obsessed with a single cleanup call, honestly. π§
π SEE ALSO π
The info documentation for the -lopts library.
configFileLoad(3)optionFileLoad(3)optionFindNextValue(3)optionFindValue(3)optionFree(3)optionGetValue(3)optionLoadLine(3)optionMemberList(3)optionNextValue(3)optionOnlyUsage(3)optionPrintVersion(3)optionPrintVersionAndReturn(3)optionProcess(3)optionRestore(3)optionSaveFile(3)optionSaveState(3)optionUnloadNested(3)optionVersion(3)strequate(3)streqvcmp(3)streqvmap(3)strneqvcmp(3)strtransform(3),
Source/version: the ao_string_tokenize(3) page in the Programmer's Manual; dated 2018-08-26. Mwah πβ¨ β Periodt.
π¦ where this page comes from
- debian trixie: libopts25-dev 1:5.18.16-7 Β· GPL-3.0-or-later
- nixpkgs unstable: autogen 5.18.16
- ubuntu questing: libopts25-dev 1:5.18.16-7build1
- ubuntu resolute: libopts25-dev 1:5.18.16-7build2 Β· GPL-3.0-or-later
- ubuntu stonking: libopts25-dev 1:5.18.16-9 Β· GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms