2015-06-30 106 views
-3

我有很奇怪的问题。我在LoadRunner中进行性能测试,并注意到在某些地址中我有奇怪的编码字符。编码URL字符

我写了一个测试程序,这是代码:

char bla[256]="test %3A test %2B"; 
printf(bla); 

输出有没有意义。它看起来像这样:

测试0X0.000000P + 0检验B

这到底是怎么回事?

+0

http://stackoverflow.com/questions/1860159/how-to-escape-the-sign-in-cs-printf –

回答

2

我认为,这里的问题是由喜欢在阵列中%3A%2B% -ed元素的存在造成的,你传递,为printf()作为唯一的参数,如果没有一个格式说明字符串。

当您将一个字符串直接传递给printf()(作为printf()的第一个参数)时,它会将这些字符串解释为格式说明符,并期望为此提供参数。但是,使用

  • 无效格式说明%2B
  • 提供较少的参数(在这种情况下,应该是理想二)

undefined behaviour

你可以试着改变你print语句

printf("%s\n", bla); 

使printf()明白,那些% s不携带任何特殊的含义,它们只是被打印。

+0

感谢您的帮助!我几年来一直没有用C语言编程,现在看起来几乎完全不同的C#和JS:P –

+0

@PawełReszka不用多说,不用担心。 :-) –