2015-06-30 137 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不用多說,不用擔心。 :-) –