sprintf'+'字符无法打印

时间:2014-05-19 08:13:38

标签: c++ c printf

我需要包含' +' sprintf格式参数中的字符。 但我知道它是一个标志说明符。所以我不能像贝娄那样写它

  sprintf( like_part, "'%%'   +   '%s'  + '%%'" , search_string.c_str() );

我试图用一个'%'性格,但它也没有工作。 有什么想法吗?

  sprintf( like_part, "'%%'   %+   '%s'  %+ '%%'" , search_string.c_str() );

我已经用另一种方式搜索了这个。 但即使参考文献也没有提及任何关于如何逃避的事情' +'字符。

  
    

http://www.cplusplus.com/reference/cstdio/printf/

  

更新: 后来我意识到这个波纹管代码也不行。

#include <iostream>
#include <string>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(int argc,char** argv)
{
  char buffer[1024];
  strcpy(buffer,"");
  strcat(buffer,"%");
  strcat(buffer,"");
  strcat(buffer,"%");
  printf(buffer);
  printf("\n");

}

输出应为&#39; %%&#39;但只有&#39;%&#39 ;; 那有什么不对? 我遇到了一个错误吗?

2 个答案:

答案 0 :(得分:4)

第一个版本应该可以正常工作。它只在格式化说明符的一部分时具有特殊的权力,例如

"My number is %+.0e"

答案 1 :(得分:3)

可以像第一个例子一样编写它。它只是在紧跟%字符之前的说明符。在所有其他情况下,它是一个标准字符。在printf来电中,唯一的特殊字符是%符号(当然,还有\,但这不是printf特定的)