ARGZ_ADD - Linux手册页
Linux程序员手册 第3部分
更新日期: 2019-03-06
名称
argz_add,argz_add_sep,argz_append,argz_count,argz_create,argz_create_sep,argz_delete,argz_extract,argz_insert,argz_next,argz_replace,argz_stringify-处理argz列表的函数
语法
#include <argz.h> error_t argz_add(char **argz, size_t *argz_len, const char *str); error_t argz_add_sep(char **argz, size_t *argz_len, const char *str, int delim); error_t argz_append(char **argz, size_t *argz_len, const char *buf, size_t buf_len); size_t argz_count(const char *argz, size_t argz_len); error_t argz_create(char * const argv[], char **argz, size_t *argz_len); error_t argz_create_sep(const char *str, int sep, char **argz, size_t *argz_len); void argz_delete(char **argz, size_t *argz_len, char *entry); void argz_extract(const char *argz, size_t argz_len, char **argv); error_t argz_insert(char **argz, size_t *argz_len, char *before, const char *entry); char *argz_next(const char *argz, size_t argz_len, const char *entry); error_t argz_replace(char **argz, size_t *argz_len, const char *str, const char *with, unsigned int *replace_count); void argz_stringify(char *argz, size_t len, int sep);
说明
这些功能是glibc特定的。
argz向量是指向字符缓冲区以及长度的指针。字符缓冲区的预期解释是字符串数组,其中字符串由空字节(aq \ 0aq)分隔。如果长度不为零,则缓冲区的最后一个字节必须为空字节。
这些函数用于处理argz向量。对(NULL,0)是argz向量,相反,长度为0的argz向量必须具有空指针。非空argz向量的分配是使用malloc(3)完成的,因此可以使用free(3)再次处置它们。
argz_add()将字符串str添加到数组* argz的末尾,并更新* argz和* argz_len。
argz_add_sep()类似,但是将字符串str拆分为由定界符delim分隔的子字符串。例如,可以在带有分隔符aq:aq的UNIX搜索路径上使用此功能。
argz_append()在(* argz,* argz_len)之后附加argz向量(buf,buf_len)并更新* argz和* argz_len。 (因此,* argz_len将增加buf_len。)
argz_count()以(argz,argz_len)为单位计算字符串数,即空字节数(aq \ 0aq)。
argz_create()将以(char )0结尾的UNIX风格的参数向量argv转换为argz向量(argz,* argz_len)。
argz_create_sep()通过在每次出现分隔符sep时将其终止将空终止的字符串str转换为argz向量(* argz,* argz_len)。
argz_delete()从argz向量(* argz,* argz_len)中删除条目所指向的子字符串并更新* argz和* argz_len。
argz_extract()与argz_create()相反。它使用argz向量(argz,argz_len)并以指向子字符串的指针和最终的NULL填充从argv开始的数组,从而形成UNIX风格的argv向量。数组argv必须有空间容纳argz_count(argz,argz_len)+ 1个指针。
argz_insert()与argz_delete()相反。它将参数条目的位置插入argz向量(* argz,* argz_len)中并更新* argz和* argz_len。如果before为NULL,则将在末尾插入条目。
argz_next()是通过argz向量步进的函数。如果entry为NULL,则返回第一个条目。否则,返回以下条目。如果没有以下条目,则返回NULL。
argz_replace()将每次出现的str替换为,并根据需要重新分配argz。如果replace_count为非NULL,则* replace_count将增加替换次数。
argz_stringify()与argz_create_sep()相反。通过将除最后一个以外的所有空字节(aq \ 0aq)替换为sep,它将argz向量转换为普通字符串。
返回值
所有进行内存分配的argz函数的返回类型均为error_t,如果成功则返回0,如果发生分配错误则返回ENOMEM。
属性
有关本节中使用的术语的说明,请参见attribute(7)。
Interface | Attribute | Value |
argz_add(),argz_add_sep(), argz_append(),argz_count(), argz_create(),argz_create_sep(), argz_delete(),argz_extract(), argz_insert(),argz_next(), argz_replace(),argz_stringify() | Thread safety | MT-Safe |
遵循规范
这些功能是GNU扩展。小心轻放。
BUGS
没有终止空字节的Argz向量可能会导致分段错误。
另外参见
envz_add(3)
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。