gpt4 book ai didi

c - 如何将 vasprintf() 与特殊字符 (%) 一起使用?

转载 作者:行者123 更新时间:2023-11-30 18:54:09 26 4
gpt4 key购买 nike

我有以下示例代码。

#include <stdio.h>
#include <unistd.h>
#include <stdarg.h>

int test(const char *fmt,...)
{
va_list args;
char *vacmd=NULL;

va_start(args,fmt);
vasprintf(&vacmd, fmt, args);
printf("vacmd is %s\n", vacmd);

return 0;
}

int main(void)
{
int ret = 0;
char *cmd="@wilso%nqw";
ret = test(cmd);
}

输出是:

vacmd is @wilsoqw

它删除了 %n从字符串中。所以我的问题是 vasprintf()是否适用于特殊字符?或者我错过了什么?

最佳答案

对于 printf() 和系列函数,

Each conversion specification is introduced by the character %.

因此,格式字符串中的 % 在与 printf()/scanf() 系列一起使用时具有特殊含义。您可以使用%%放弃特殊含义。

引用这方面的标准,来自fprintf()函数规范

%

A % character is written. No argument is converted. The complete conversion specification shall be %%.

<小时/>

FWIW,您当前的代码显示 undefined behaviour ,如“如果格式参数不足,则行为未定义。” 根据您的代码,没有为 %n 格式说明符提供参数。

关于c - 如何将 vasprintf() 与特殊字符 (%) 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30917402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com