asprintf
2016-01-25 15:55
561 查看
函数原型:
int asprintf(char **strp, const char *fmt, ...);
功能:
asprintf()可以说是一个增强版的sprintf(),在不确定字符串的长度时,非常灵活方便,能够根据格式化的字符串长度,申请足够的内存空间。此外,使用完后,必须通过free()释放空间。不过,这是GNU扩展的C函数库,不是标准C函数库或者POSIX。
头文件:
asprintf.h
char *cli_command_name(struct cli_def *cli, struct cli_command *command)
{
char *name = cli->commandname;
char *o;
if (name) free(name);
if (!(name = calloc(1, 1)))
return NULL;
while (command)
{
o = name;
if (asprintf(&name, "%s%s%s", command->command, *o ? " " : "", o) == -1)
{
fprintf(stderr, "Couldn't allocate memory for command_name: %s", strerror(errno));
free(o);
return NULL;
}
command = command->parent;
free(o);
}
cli->commandname = name;
return name;
}
int asprintf(char **strp, const char *fmt, ...);
功能:
asprintf()可以说是一个增强版的sprintf(),在不确定字符串的长度时,非常灵活方便,能够根据格式化的字符串长度,申请足够的内存空间。此外,使用完后,必须通过free()释放空间。不过,这是GNU扩展的C函数库,不是标准C函数库或者POSIX。
头文件:
asprintf.h
char *cli_command_name(struct cli_def *cli, struct cli_command *command)
{
char *name = cli->commandname;
char *o;
if (name) free(name);
if (!(name = calloc(1, 1)))
return NULL;
while (command)
{
o = name;
if (asprintf(&name, "%s%s%s", command->command, *o ? " " : "", o) == -1)
{
fprintf(stderr, "Couldn't allocate memory for command_name: %s", strerror(errno));
free(o);
return NULL;
}
command = command->parent;
free(o);
}
cli->commandname = name;
return name;
}
相关文章推荐
- Owin管道与asp.net管道模型
- Asp.Net前台调用后台变量的方法
- ASP与ASP.NET的区别与比较
- ASP.NET网站管理工具无法连接SQL&n…
- Asp.net原理:Asp.net管道 (…
- ASP.NET MVC4.0+EF+LINQ+bui+网站+角色权限管理系统(5)
- ASP.NET学习路线图(入门)
- Asp.Net 文件加解密
- Asp.Net 启用全局IE兼容模式
- 提高 ASP.NET Web 应用性能
- ASP
- 【转】 (C#)利用Aspose.Cells组件导入导出excel文件
- 详解 ASP.NET异步
- 提高 ASP.NET Web 应用性能的 24 种方法和技巧
- ASP.Net基础知识积累
- asp.net网站500.19错误的解决办法
- ASP.NET性能优化
- asp.net mvc多条件+分页查询解决方案
- 1.Getting Started with ASP.NET MVC 5
- ASP.NET 2.0构建动态导航的Web应用程序(TreeView和Menu ) (海东的技术资料)