acl/lib_acl/samples/string/main.c

85 lines
2.3 KiB
C

#include "lib_acl.h"
static void quote_split(const char* str, const char* delim)
{
ACL_ITER iter;
ACL_ARGV *tokens = acl_argv_quote_split(str, delim);
printf("---------------------------------------------\r\n");
printf("str = [%s], delim = [%s]\r\n", str, delim);
acl_foreach(iter, tokens) {
const char* ptr = (const char*) iter.data;
printf("%s\r\n", ptr);
}
acl_argv_free(tokens);
}
static void test_quote_split(void)
{
struct {
const char* str;
const char* delim;
} data[] = {
{ "hello world", " \t" },
{ "\t hello\' world\"", "\t " },
{ "hi \"hello world\"", "\t " },
{ "\t 'myname is zsx.' \"what\'s your name?\" Good! ", "\t " },
{ "name = \"zsx xsz\", name2 = 'xsz,= zsx'", "\t =," },
{ NULL, NULL },
};
int i;
for (i = 0; data[i].str != NULL && data[i].delim; i++)
quote_split(data[i].str, data[i].delim);
}
int main(void)
{
char *src = acl_mystrdup("hello \tworld! you're welcome to China!");
char *ptr, *src_saved;
ACL_VSTRING* buf;
const char* s = "hello";
unsigned int n1 = (unsigned int) -1;
unsigned long n2 = (unsigned long) -1;
unsigned long long n3 = (unsigned long long) -1;
const char *str2 = "hello world, you're welcome!";
ACL_ARGV *tokens = acl_argv_split(str2, " \t,'!");
ACL_ITER iter;
printf("----------------------------------------------\r\n");
acl_foreach(iter, tokens)
printf("tokens[%d]: %s\r\n", iter.i, (const char*) iter.data);
printf("total: %d\r\n", iter.size);
acl_argv_free(tokens);
printf("----------------------------------------------\r\n");
src_saved = src;
printf("src: %s\r\n", src);
while ((ptr = acl_mystrtok(&src, " \t!'")) != NULL)
{
printf("--------------------------------------\r\n");
printf("ptr: |%s|\r\n", ptr);
printf("src: |%s|\r\n", src);
printf("src_saved: |%s|\r\n", src_saved);
}
acl_myfree(src_saved);
printf("----------------------------------------------\r\n");
buf = acl_vstring_alloc(1);
acl_vstring_sprintf(buf, "%*lu, s: %s, n1: %20u, n2: %20lu, n3: %20llu\n",
(int) sizeof(unsigned long) * 4, (unsigned long) getpid(),
s, n1, n2, n3);
printf("buf: %s\r\n", acl_vstring_str(buf));
acl_vstring_free(buf);
printf("Enter any key to continue ...\r\n");
getchar();
test_quote_split();
return 0;
}